当前位置:网站首页 > 编程语言 > 正文

labview调用dll动态库句柄参数(labview调用llb库)



NI LabVIEW调用外部程序DLL文件的CLN

产品简介: LabVIEW 中是通过Call Library Function Node(CLN)节点来完成DLL文件调用的。创建一个新的VI,右击程序框图,在Functions Palette中依次选中Connectivity——LibrariesExecutables工具栏即可找到该节点。

详细介绍:

LabVIEW调用DLL文件   LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用。比如,在实际的工程项目中,用户可以用C++语言实现软件的运算部分,并把这些功能构建在DLL文件中,然后再使用 LabVIEW编写程序的界面部分,并通过调用编写好的DLL来调用运算部分的功能。   LabVIEW 中是通过Call Library Function Node(CLN)节点来完成DLL文件调用的。创建一个新的VI,右击程序框图,在Functions Palette中依次选中Connectivity——LibrariesExecutables工具栏即可找到该节点(图1)。

图1 Call Library Function Node   将节点放置在程序框图中,双击会出现它的配置对话框,共有四页。第一页用于填写被调用函数的信息(图2)。Library name or path需给出DLL文件名和路径,操作系统路径下的DLL文件,直接输入文件名也可调用,否则必须输入全路径。在这里已经给出名字的DLL是被静态加载到程序中的,也就是说当调用了这个DLL的VI被装入内存时,DLL同时被装入内存。LabVIEW也可动态加载DLL,只要勾选上Specify path on diagram的选项即可。选择了这个选项,在 Library name or path中输入的内容就无效了,取而代之的是CLN 节点多出一对输入输出,用于指明所需要使用的DLL的路径。这样,当VI被打开时,DLL不会被装入内存,只用程序运行到需要使用这个DLL中的函数时,才把其装入内存。Function name是需要调用的函数的名称,LabVIEW会把DLL中所有的暴露出来的函数都列出,用户只要在下拉框中选取即可。Thread栏用于设定哪个线程里运行被调用的函数。用户可以通过 CLN 节点的配置面板来指定被调用函数运行所在的线程。CLN 的线程选项非常简单,只有两项: Run in UI thread和Run in any thread。LabVIEW的程序框图上直接可以看出一个 CLN节点是选用

图2 填写被调用函数信息 的什么线程。如果Run in UI thread,节点颜色是橙色的;Run in any thread则是浅黄色的(图3)。

图3 CLN不同线程对比   通常情况下,除非使用的动态链接库是多线程安全的,CLN 中选择Run in any thread方式;否则必须选择Run in UI thread方式。判断一个动态链接库是不是多线程安全的,需通过以下方法:如果一个动态链接库的文档中没有明确说明它是多线程安全的,那么就要当作是非多线程安全的;在可以看到动态链接库源代码的条件下,如果代码中存在全局变量、静态变量或者代码中看不到有lock一类的操作,那么这个动态链接库也就肯定不是多线程安全的。   选择了Run in any thread方式,LabVIEW会在最方便的线程内运行动态链接库函数,且一般会与调用它的VI在同一个线程内运行。因为LabVIEW是自动多线程的语言,它也很可能会把动态链接库函数分配给一个单独的线程运行。如果程序中存在没有直接或间接先后关系的两个CLN节点,LabVIEW很可能会同时在不同的线程内运行它们所调用的函数,也许是同一函数。对于非多线程安全的动态链接库,这是很危险的操作。很容易引起数据混乱,甚至是程序崩溃。   选择Run in UI thread方式,因为LabVIEW只有一个界面线程,所以如果所有的CLN设置都是界面线程,那么就可以保证这些CLN调用的函数肯定全部都运行在同一线程下,肯定不会被同时调用。对于非多线程安全的动态链接库,这种方式就保证了它的安全。   让我们回到配置对话框第一页,Calling convention用于指明被调用函数的调用约定。这里只支持两种约定:stdcall和C call。它们之间的区别在于,stdcall由被调用者负责清理堆栈,C call由调用者清理堆栈。这个设置错误时,可能会引起LabVIEW崩溃,也就是说如果LabVIEW调用DLL函数时出现异常,首先应该

到此这篇labview调用dll动态库句柄参数(labview调用llb库)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • qq怎么扫描二维码登录平板(qq怎么扫描二维码登录平板上)2026-03-12 17:45:14
  • modbuspoll报文在哪看(modbus udp 报文)2026-03-12 17:45:14
  • 使用u盘制作启动盘(u盘制作启动盘失败电脑无法识别)2026-03-12 17:45:14
  • ip地址子网掩码转换器(ip地址和子网掩码怎么转换)2026-03-12 17:45:14
  • samba windows共享(samba共享文件夹)2026-03-12 17:45:14
  • passa平台(pass+saas)2026-03-12 17:45:14
  • linux修改文件权限不够(linux操作系统修改文件权限)2026-03-12 17:45:14
  • max30102芯片引脚图(max30102芯片引脚图 51)2026-03-12 17:45:14
  • 汽车报文解析(汽车报文解析事例)2026-03-12 17:45:14
  • windows10启动u盘制作(win10 u盘系统启动盘制作)2026-03-12 17:45:14
  • 全屏图片