LABVIEW的DLL与API调用
- 格式:pdf
- 大小:115.62 KB
- 文档页数:3
LabVIEW编程调用DLL时遇见的问题对于使用LabVIEW编程的人来说,都知道LabVIEW功能强大,但也会发现似乎缺少某些功能,而像其他编程语言的DLL、ActiveX组件则能提供。
在使用DLL(动态链接库)时,最大的困难就是把函数参数的数据类型映射为相应的LabVIEW中的数据类型。
LabVIEW 提示:未定义符号可能会造成函数和参数无法被识别。
如要解决该问题,检查头文件并确定是否必须添加预定义符号。
单击上一步按钮返回至向导的前一页并添加预定义符号(例如,"NIAPI_stdcall = __stdcall"或"NIAPIDefined = 1")在一次进行串口调试软件的编写过程中,要求使用动态链接库(其实使用VISA同样可以实现),使用导入共享库工具以自动生成配置CLN(Call Library Function)节点,工具在“工具—导入—共享库(.dll)”菜单项下,专门用于将DLL 中函数包装成VI。
下一步下一步点击解析头文件后,依然遇见(如下图)extern UINT Recv(UCHAR *pRecvBytes,UINT unRecvLength);(函数原型)未定义符号可能会造成函数和参数无法被识别。
如要解决该问题,检查头文件并确定是否必须添加预定义符号。
单击上一步按钮返回至向导的前一页并添加预定义符号(例如,"NIAPI_stdcall = __stdcall"或"NIAPIDefined = 1")归咎原因就是头文件中的一些类型定义不符合标准C语法,而使解析器无法获得正确的的mPWIN32_COMMAND定义。
DLL函数的头文件中可能使用了某个系统定义的数据类型,数据类型的定义在windows.h中,(windows.h是Windows SDK的一个文件,VC等开发环境中常常带有Windows SDK),要正确解析必须得到这些数据类型,也就是找到windows.h 这个头文件,用户须把windows.h文件的全路径加在“包括路径”中。
关于LabVIEW产生的DLL被C调用的问题1 LabVIEW的工作1.1 工程项目从LV8.0开始,想要生成exe、安装程序或DLL就必须首先创建1个工程,然后把所有有关的VI全部添加到工程中,如图1:图1 LV项目为了使目录结构清晰,最好把最后需要输出的VI放置在一起,把子VI放置在一起,如图1中,虚拟目录Top Level Vis用来存放3个输出的VI(可以把它想像成DLL中的函数)、虚拟目录Dynamic Vis存放子VI、虚拟目录Support Files存放支持文件(位图、光标等)。
1.2 VI设置如同在LV中一样,有些VI完全是作为计算模块使用的(调用时不会弹出界面,如图1中的acquire.vi、analyze.vi),而有些是用来显示界面的(调用时弹出对话框,如图1中的present.vi)。
那么如何设置1个输出VI是否显示界面呢?想要产生界面调用的函数,请配置Window Appearance(如图2),然后确保红线圈住的地方必须被选中:图2 VI界面设置1.3 输出配置(Build Specification)右击Build Specification选择New->DLL,弹出DLL输出配置对话框,其有以下对话框需要配置:1.3.1 基本信息(Information)图3∙Build specification name—指定唯一的生成模板名称(出现在项目管理页面中),用以和其他模板相区别∙Target filename—指定输出的DLL名称∙Destination directory—指定生成文件的输出路径∙Build specification description—描述该生成模板的相关信息。
1.3.2 输出源指定(Source Files)图4∙Project Files窗口—显示项目窗口My Computer下列举的项目(如图1),使用图4中的左/右箭头可将My Computer下列举的项目移入/移出Exported VIs和Always Included窗口。
前言:LABVIEW是一个强大的图形编程语言,使用很简单,就是你没有任何编程经验也可以LABVIEW编程,对于需要快速上手图形编程的人是一个不错的选择。
在很多时候我们会用C语言写一些计算机的底层驱动,比如USB数据传输或者串口数据传输,如何把我们自己写的驱动程序集成到LABVIEW中呢?下面我就用图和简单说明的方式给大家说说,由于我也是初学,所以有的地方可能会有错误或不准确的地方,欢迎大家指正,废话不多说了,下面开始正式的教程。
目的:通过一个现成的I2C适配器控制I2C接口的AM2311温湿度传感器,将测得的温度和湿度用LABVIEW显示出来,最终效果如图所示。
准备:1、安装LABVIEW2010。
2、I2C适配器1台。
3、I2C适配器上位机驱动函数库,和函数库头文件。
4、AM2311传感器模块一台。
第一步:打开LABVIEW2010,按下图导入我们需要使用的DLL文件。
得到如下界面,点击下一步。
打开DLL和头文件,点击下一步。
到这里我们的库就基本上导入完毕,但是还有一件事情要做,因为在Ginkgo_Driver.dll里面用到了vt214x.dll里面的一些函数,所以要把这个文件拷贝到刚刚生成库的目录下,否则在运行程序的时候会出现找不到这个DLL的错误提示,而且程序也不能正常工作。
我生成的库目录是:D:\Program Files (x86)\National Instruments\LabVIEW 2010\user.lib\Ginkgo_Driver。
你可以根据自己的实际情况处理,拷贝这个文件后在这个目录下的文件如下图所示:到这里库基本上就导入完毕,下面我们就可以在VI程序里面使用这些库函数了。
第二步:打开LABVIEW软件,新建一个VI文件,另存名字为AM2311.vi。
我们在前面板设计为如下界面。
切换到程序款图界面,因为我们程序需要顺序执行,最后需要在一个循环里面循环读取数据,所以我们可以通过平铺顺序结构来设计程序,在平铺顺序结构的第一帧调用刚刚导入的VTIF_I2C_SelectDevice()函数选择设备,在第二帧调用VTIF_I2C_Init()初始化函数初始化I2C适配器,然后就可以循环的读取数据了,最好将数据解析出来并显示出来。
LabVIEW与外部程序间DLL文件的调用什么是DLL文件DLL(动态链接库)文件是Dynamic Link Library的缩写形式,是一种允许程序共享执行特殊任务所必需的代码和其他资源的可执行文件。
其多数情况下是带有DLL扩展名的文件,但也可能是EXE或其他扩展名。
Windows提供的DLL文件中包含了允许基于Windows 的程序在Windows环境下操作的许多函数和资源。
动态链接提供了一种方法,使进程可以调用不属于其可执行代码的函数。
这些函数的可执行代码位于一个DLL中,该DLL包含一个或多个已被编译、链接并与使用它们的进程分开存储的函数。
DLL还有助于共享数据和资源,多个应用程序可同时访问内存中单DLL副本的内容。
总之,DLL是一个包含可由多个程序同时使用的代码和数据的库。
动态链接是相对于静态链接而言的。
所谓静态链接是指把要调用的函数或者过程链接到可执行文件中,成为可执行文件的一部分。
换句话说,函数和过程的代码就在程序的exe文件中,该文件包含了运行时所需的全部代码。
当多个程序都调用相同函数时,内存中就会存在这个函数的多个拷贝,这样就浪费了宝贵的内存资源。
而动态链接所调用的函数代码并没有被拷贝到应用程序的可执行文件中去,而是仅仅在其中加入了所调用函数的描述信息(往往是一些重定位信息)。
仅当应用程序被装入内存开始运行时,在Windows的管理下,才在应用程序与相应的DLL之间建立链接关系。
当要执行所调用DLL中的函数时,根据链接产生的重定位信息,Windows才转去执行DLL中相应的函数代码。
由于向运行于Windows操作系统下的程序提供代码、数据或函数,程序可根据DLL文件中的指令打开、启用、查询、禁用和关闭驱动程序。
在Windows操作系统中,DLL对于程序执行是非常重要的, 因为程序在执行的时候, 必须链接到DLL文件, 才能够正确地运行。
而有些DLL文件可以被许多程序共用,因此程序设计人员可以利用DLL文件, 使程序不至于太过巨大。
LABVIEW的DLL与API调用LABVIEW的DLL与API调用一.实验目的1.熟悉LabVIEW调用动态链接库的过程2.学会编写用LabVIEW调用WINDOWS的API函数二.实验器材1.计算机(带有声卡)2.LABVIEW8.20软件三.实验原理在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。
为了在LabVIEW中能够充分利用其他编程语言的优势,LabVIEW提供了外部程序接口能力,包括动态链接库(DLL)、C语言接口(CIN)、ActiveX和Matlab等。
动态链接库是基于Windows程序设计的一个非常重要的组成部分。
LabVIEW 开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。
而windows平台包含有大量的API函数,这些API函数提供了大量在Windows环境下可操作的功能,它们位于Windows系统目录下的多个DLL文件中,因此在LabView中调用API 函数和DLL的方法是一致的。
在LabVIEW中,利用库函数节点可以较容易地实现对DLL的调用,从而提高了程序的开发效率。
使用调用库函数节点,可以调用Windows标准的动态连接库,也可以调用用户自己编制的DLL。
LabView中动态链接库的调用可在程序框图的函数选板中选取“调用库函数节点”来完成,该节点位于:互连接口->库和可执行程序->调用库函数节点。
将选择好的调用库函数节点图标放在程序框图中,然后通过对它的节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。
在调用DLL时,首先要找到找到头文件(*.h)或者函数原型声明,确定你需要调用的函数,注意函数的参数是否包含了原始数据类型参数比如int,char, double,等等或者是否包含了复杂数据类型比如clusters。
图20 Parameters页面点击“OK”,将生成的CLN的输入段连接到DAQmx Read.vi,return type 输出连接到波形图表上,即可实现采集值放大10倍的功能。
图21 完成后的程序方法二LabVIEW中还有一种方法可以调用DLL文件,在VI的选项栏,依次选择Tools——Import——Shared Library(.dll),弹出Import Shared Library 对话框。
图22 生成Import Shared Library对话框选择Create VIs for a shared library,点击Next,在Shared Library (.dll) Files中输入Scale.dll文件的路径,Head(.h) File里填写头文件的路径。
图23 选择DLL文件路径和头文件路径点击Next,如果DLL文件中依赖其他的一些DLL文件,需要在Include Paths中填写这些文件的路径。
其他选项可以根据客户需求设置,一般默认即可。
这样一直点击Next到最后,选择Open the generated library,点击Finish。
这样可以生成一个.lvlib格式的库文件,里面包含了Scale.vi,这是将调用该DLL 文件的方法封装好的VI,只留下输入和输出接口,方便运用到LabVIEW的程序中。
直接将Scale.vi拖放到刚才的连续采集中即可完成方法一的功能。
图24 完成的程序VC调用LabVIEW生成的DLL文件刚才介绍了LabVIEW调用DLL文件的方法,使用VC调用LabVIEW生成的DLL 文件也很简单。
还是以之前生成Scale 的DLL文件为例,不同的是采集电压程序使用的是C语言的例程,但和LavVIEW实现的功能相同。
首先将先前生成Scale DLL文件时,路径下所有的文件全部复制粘帖到C语言例程的文件夹下。
打开连续采集程序,点击状态栏的Project——Settings,在Project Settings对话框中加载入Scale.lib的静态链接库。
LabVIEW调用库函数节点技术LabVIEW提供了调用库函数节点(Call Library Function node,简称CLF),利用CLF,可以在LabVIEW中实现DLL和API函数的调用。
在LabVIEW中使用CLF 需要了解动态链接库里被调用的函数名称、功能及其输入输出参数等,下面将详细介绍在LabVIEW 8.6下利用CLF调用6050运动控制卡基于C语言编写的驱动程序[41]。
首先在框图程序中创建一个空的CLF,CLF位于“函数模板→互连接口→库与可执行程序子模板”,如图1-1所示,下面给出其详细的配置过程:图1-1 CLF节点图标(1)双击CLF图标弹出配置对话框,如图1-2所示,首先要指定6050控制卡动态链接库的库名或路径。
点击其右边的文件夹图标,打开一个文件对话框,找到6050运动控制卡的动态链接库文件“dfjzh6050dll.dll”所在位置。
(2) LabVIEW装载了DLL文件后会自动检测其所包含的函数,但不能检测函数中的参数及其数据类型,因此接下来的要参照DLL说明文件“dfjzh6050dll.h”及控制卡使用手册选择所要配置的函数名,设置函数参数。
(3)在调用规范中有“stdcall(WINAPI)”和“C”两个选项,它们的区别是,若调用函数为Windows标准共享库函数则选择“stdcall(WINAPI)”选项,若调用函数为VC环境下编译的库函数则选择“C”选项,本文选择“C”选项。
(4)在“线程”选项中选择“在UI线程中运行”。
至此,完成了所有配置选项,在CLF配置图最下方可以看到函数原型。
下面阐述配置CLF过程中需注意的两个问题:图1-2 CLF节点配置图Figure1-2 CLF Node Setting Chart(1) LabVIEW线程调用方式节点配置中,有两种线程调用方式,“在UI线程中运行”和“在任意线程中运行”。
“在UI线程中运行”表示在用户接口线程中调用,DLL的执行期将等到用户接口线程(在此即LabVIEW环境下的VI应用程序)执行DLL的导出函数调用时才开始;“在任意线程中运行”表示允许多个线程同时调用这个DLL。
Labview调用库函数节点(调用DLL)相对于CIN来讲,NI更推荐用户使用DLL来共享基于文本编程语言开发的代码。
除了共享和重复利用代码,开发人员还能利用DLL封装软件的功能模块,以便这些模块能被不同开发工具利用。
在labview中,使用DLL一般有以下几种途径:(1)使用自己开发DLL中的函数。
(2)调用操作系统或硬件驱动供应商提供的API。
对于前一种方法来说,又可以通过以下几步实现:(a)在labview中定义DLL原型;(b)生成.C或.C++文件,完成实现函数功能的代码并为函数添加DLL导出声明;(c)通过外部IDE(如VC++)创建DLL项目并编译生成.dll文件。
下面的内容将具体讲解:配置Call library function node (CFN)无论在labview中使用自己开发的DLL,或者硬件驱动供应商(操作系统)提供的API,都可以通过配置CFN来完成。
如下图在CFN图标的右键菜单选择“配置”,打开配置对话框,通过该对话框,可以指定动态库存放路径、调用函数名以及传递给函数的参数类型和函数返回值的类型。
在配置完成后,CFN节点会根据用户的配置自动更新其显示。
通过browse按钮或者直接在library name or path输入框中指定调用函数多在.dll文件的路径。
通过browse按钮下的控件用户可以指定多个线程同时调用DLL。
默认情况下,labview以run in UI Thread方式调用DLL,调用的函数将直接在用户线程中运行。
另外一种方式是递归方式reentrant,在这种情况下可以允许多个线程同时调用DLL中的函数。
但要确保正常调用,必须使dll中的代码线程安全。
在“Function Name”输入框中指定要调用函数的函数名。
通过“Call Conventions”下拉列表框指定调用DLL 中函数的方式。
可以指定调用方式为“C”(默认方式)或Windows 标准调用方式“stdcall”。
调用DLL时接口类型匹配简介1、数值类型Data type:选择数值的类型。
Pass:选择采用传值方式还是传引用方式。
2、布尔类型a. 方法一:使用数值类型作为输入输出。
在连接输入的时候将布尔值转换为数值。
在输出的时候使用判断是否等于0来获取布尔值。
b. 方法二:类型中选择“Adapt to Type”(匹配至类型),数据格式选择“Handles by Value”。
在程序中,直接接入布尔数据,接线端会自动变为布尔类型。
3、字符串类型由于需要为字符串分配内存空间,对于字符串输出,需要为其在输入的一端接入初始字符串。
当初始字符串长度不够时,程序会因为内存内存越界而出错。
4、一维数值数组a. 当生成dll的时候采用“Array Data Pointer”时,参数中会自动增加一个“len”的数值参数:在“Length Input”中会默认设置为此参数值,用以表示数组的长度。
在调用此dll时,对于数组类型,在“Array format”中设置为Array Data Pointer。
同时需要将数组的长度值接至len端上:b. 当生成dll的时候采用“Array Handle Pointer”时,这时输入输出对应的是指向句柄的指针,可执行系统级的操作。
程序可以自动获取数组的长度,所以将不会有“len”参数出现。
在调用此dll时,在“Array format”中选择Array Handle Pointer即可。
在程序中不再需要为数组指定长度。
5、二维数值数组当参数为二维数值数组的时候,在LabVIEW下生成dll时类型只能选择为指向句柄的指针。
调用的方法与4.b类似,只需将“Dimensions”设置为2即可:6、不包含数组的簇数据类型设置为“Adapt to Type”,数据格式设置为“Handles by Value”。
将簇直接接入即可。
7、包含数组的簇、调用方法与调用一维数组类似。
a. 当参数类型为句柄时(一般情况下这种dll是不能使用LabVIEW生成的),在调用dll 的时候,类型设置与不含数组的簇一样:由于需要为这种簇分配内存空间,所以需要将簇的输出接入对应的数据:b. 当参数类型为指向句柄的指针时,将数据格式设置为“Pointers to Handles”。
动态链接库英文为DLL,是Dynamic Link Library 的缩写形式,DLL是一个包含可由多个程序同时使用的代码和数据的库。
在LabVIEW中,一维数组、二维数组、字符串是可以和C/C++中的相应数据类型直接对应起来,因此比较容易实现。
那么对于C/C++语言中的结构体,大家也会想到可以和LabVIEW中的簇对应起来,但是在具体的应用中还会涉及到一些细节,需要我们去留意,否则很可能调用不成功,甚至由于非法读写内存导致系统崩溃。
另外,在LabVIEW中的返回值只有数值、字符串和指针,因此当DLL中的函数返回值为结构体时该如何处理?当输入参数包含指向函数的指针时该如何处理?在解决这些问题之前,先推荐四篇文档,有长有短,但是都写得很细致:1)如何通过调用库函数结点使用DLL——Configuring the Call Library Function Node to call a Simple DLL 链接:https:///content/docs/DOC-90692)如果是简单的数据类型(如数值、数组、字符串、简单结构体),在LabVIEW和DLL之间传递或接收指针,LabVIEW能够自动的正确的解析指针——Passing and ReceivingPointers with C/C++ DLLs from LabVIEW 链接:https:///content/docs/DOC-90803)因为LabVIEW隐藏了对内存的管理,没有开放的函数提供对具体内存地址的直接访问,所以当C/C++中返回的是一个指针,并且LabVIEW又不能自动解析这个指针时,该怎么办——Dereferencing Pointers from C/C++ DLLs in LabVIEW 链接:https:///content/docs/DOC-90914)介绍导入共享库工具(Import Shared Library Wizard),当我们拿到一个DLL和它的头文件(.h)时,利用该工具,能够自动生成针对DLL每个函数的子VI,最大的好处是不需要再手动设置输入输出参数并进行类型匹配,当然它有一定的局限性,比如复杂的类型它匹配不了——Creating Wrapper VIs for C/C++ DLL functions using the Import Shared Library Wizard 链接:https:///content/docs/DOC-90785)大家也可以通过这篇文档直入主题,因为它写得很全,包含详细的VI和C/C++源代码,并且有一个目录供大家索引,它回答了以下情况的问题:1)数值型2)一维数组 3)字符串4)二维数组 5)简单结构体 6)复杂结构体。
问题:如何从LabVIEW中调用动态链接库DLL解答:要从LabVIEW中调用动态链接库(DLL),你需要首先确定是哪种类型的DLL。
基本上有两种类型的DLL需要考虑:C/C++ DLL 和Microsoft .NET assembly. C/C++ DLL 用C, C++, 或其他编程语言生成(除了.NET 语言) 比如Java, Fortran, 或Visual Basic 6.0. .NET DLL 也被称为".NET assembly" 或者就是"assembly". 这个术语的区别在于.NET DLL 与其他DLL的工作方式不同. .NET DLL使用Common Language Runtime (CLR) 和.NET Framework "处理" DLL中的函数.如果DLL是C/C++ DLL:1找到头文件(*.h) 或者函数原型声明.2确定你需要调用的function(s) . 注意函数的参数是否包含了原始数据类型参数比如int, char, double, 等等或者是否包含了复杂数据类型比如clusters.3如果函数没有包含复杂数据类型并且你有头文件(*.h), LabVIEW中一个很好的工具可以帮你简单地导入DLL (并且会帮助你创建DLL的整个库). 你可以在Tools?Import?Shared Library (.dll)...中找到该工具; 按照向导进行下去.4如何函数不含有复杂数据类型但是没有头文件(*.h), 首先确定你使用的是C/C++ DLL因为大部分的编程环境将对这种DLL 生成头文件. 如果你确实在处理C/C++ DLL, 找到该函数的相关文档,因为你需要确定那些在DLL中被调用的函数的参数. 一旦参数被确定,使用Call Library Function Node LabVIEW中的函数手动调用该函数。
对于新手易语言用户来说DLL和API很高深很神秘,你今天看了我这个教程,你就不觉得了!!进入正题:我们首先来编写一个易语言的子程序(这个不懂建议去再去看看例子)本子程序的原理就是:传递一个半径给本子程序然后使用公式算出周长后返回一个整数型的周长!!然后我们来调用这个函数:然后程序给编辑框1赋值圆周,然后显示到编辑框!运行程序就是这样了!!其实编写DLL和调用DLL的方式就于编写子程序相似!我们接下来用编写DLL的方式实现!打开易语言!打开易语言就是这样,跟以往不同的是没有窗口设计框!其实也可以添加窗口!!然后我们来编写DLL接口函数,按下ctrl+n然后创建一个子程序,在返回值类型写下整数型然后回车创建一个参数接口!就像这样参数名可以随便填写但是类型不能!因为半径是数字,所以我们设置为整数型。
然后我们创建一个变量周长来保存运行的结果!!因为我们上面返回值设置为整数型,所以我们需要返回一个整数。
返回的是上面?我们需要求周长,我们就返回周长!是不是跟先编写的子程序一样的?最重要的一点是这里必须勾上,因为勾上了这个,外部程序就能调用了!如果不勾上,这个子程序只能供DLL内部调用!然后我们编译起来!然后我们来调用这个DLL,运行易语言,新建一个程序!然后双击这里,我们需要声明程序函数(非常重要);为什么我们要声明呢?因为易语言中没有这个函数,所以我们要求程序调用外部的这个函数来帮助我们完成。
右键,新建一个DLL命令完成了,我们需要做什么呢?我们需要一个参数传递半径!这就是声明好了的DLL,那个文件名为什么只写一个1.dll呢?因为我这个是刚刚写的那个DLL的文件名,为什么不写完整路径呢?在同一目录下或者SYSTREAM32(系统)目录下的DLL都可以不用写上完整路径!那个参数1的类型就是刚刚那个DLL子程序1参数的类型。
必须注意的是,DLL 函数有返回值,所以声明的时候必须写上对应的数据类型!!然后我们就像调用子程序一样调用DLL,在写好代码以后需要保存,看源码路径和DLL路径是否在同一目录。
LABVIEW的DLL与API调用
一.实验目的
1.熟悉LabVIEW调用动态链接库的过程
2.学会编写用LabVIEW调用WINDOWS的API函数
二.实验器材
1.计算机(带有声卡)
2.LABVIEW8.20软件
三.实验原理
在开发自动测量系统时,经常遇到计算机与仪器的通信问题,涉及仪器控制及数据处理问题,LabVIEW语言在这一领域的应用有着独到的优势。
为了在LabVIEW中能够充分利用其他编程语言的优势,LabVIEW提供了外部程序接口能力,包括动态链接库(DLL)、C语言接口(CIN)、ActiveX和Matlab等。
动态链接库是基于Windows程序设计的一个非常重要的组成部分。
LabVIEW 开发中使用DLL,可以使代码更简洁,内存资源的使用更经济,而且可以便捷地利用仪器厂商或第三方提供的仪器控制子程序加速开发进程。
而windows平台包含有大量的API函数,这些API函数提供了大量在Windows环境下可操作的功能,它们位于Windows系统目录下的多个DLL文件中,因此在LabView中调用API
函数和DLL的方法是一致的。
在LabVIEW中,利用库函数节点可以较容易地实现对DLL的调用,从而提高了程序的开发效率。
使用调用库函数节点,可以调用Windows标准的动态连接库,也可以调用用户自己编制的DLL。
LabView中动态链接库的调用可在程序框图的函数选板中选取“调用库函数节点”来完成,该节点位于:互连接口->库和可执行程序->调用库函数节点。
将选择好的调用库函数节点图标放在程序框图中,然后通过对它的节点图标进行配置,可以指定DLL模块中与LabVIEW数据交换的相应的驱动函数。
在调用DLL时,首先要找到找到头文件(*.h)或者函数原型声明,确定你需要调用的函数,注意函数的参数是否包含了原始数据类型参数比如int,char, double,等等或者是否包含了复杂数据类型比如clusters。
如果函数没有包含复杂数据类型并且你有头文件(*.h),该DLL在数据类型的定义上与LabView一致,那么LabVIEW中一个很好的工具可以帮你简单地导入DLL(并且会帮助你创建DLL的整个库)。
你可以在工具—>导入—>共享库(.dll)...中找到该工具,按照向导进行下去。
如果函数不含有复杂数据类型但是没有头文件(*.h),或者由于DLL编写不够规范,在数据类型的定义上与LabView并不完全一致,你需要确定那些在DLL 中被调用的函数的参数,一旦参数被确定,使调用库函数节点中的函数手动调用该函数。
这是你需要对调用的函数进行手工配置。
在调用DLL库中函数时,必须知道以下信息:函数返回的数据类型、函数调用的方式、函数的参数及类型、DLL库文件的位置等。
右键单击调用库函数图标,在弹出的菜单选项中选择配置...选项,可得到下图所示的配置对话框。
对函数和参数选项卡进行适当的配置就可以完成对DLL的调用。