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

labview调用dll动态库运行报内存泄露(labview调用dll崩溃)



LabVIEW是一种图形化编程语言,具有简单易学、形象直观的特点。同时,LabVIEW为一种通用的、完善的高级编程语言,具有强大的外部接口能力,可以实现LabVIEWCBasicMatlab等编程语言,甚至与外部应用软件(如WordExcel等)之间的通信,达到代码复用及提高开发效率的目的。通过动态连接库DLL文件实现LabVIEW中与外部程序的接口技术,是最常用的一种方式,通过这种技术可以编写出功能更加强大的应用软件。

相对于其它编程语言,在LabVIEW中调用DLL文件是比较简单的。下面通过一个例子说明在LabVIEW平台中调用DLL文件的编程方法。

调用DLL例子

本例调用C语言编写的DLL文件“MyDll.dll”里的函数“MyFunc”,其函数声明原型如图1所示:

1 MyFunc”函数的原型声明

该函数实现的功能为,产生一个初始值为x0、间隔为deltx、长度为length的一维数组y,并给出该数组的最后一个值lastData和函数的运行状态信息status。从函数的声明中可以看出,该函数中数据类型涉及到了“double”类型、“int”类型和“char”类型(对应LabVIEW字符串型),在参数传递中也涉及到了值传递(x0deltxlength)和指针(ylastDatastatus)传递方式,较为复杂。为便于理解,图2给出了该函数的C语言实现代码。

2 MyFunc”函数的实现代码

该例调用DLL函数后程序运行前面板如图3所示,在前面板上放置了3个输入型控件3个显示型控件,分别对应“MyFunc”函数的6个参数。当改变参数x0deltxlength的值时,程序实时显示出ylastDatastatus的值。

3 调用DLL的参数传递测试的前面板

程序框图如图4所示,在参数x0deltxlength的值改变事件中调用DLL文件“MyDll.dll”里的“MyFunc”函数计算ylastDatastatus的值。

4 调用DLL的参数传递测试的程序框图

该例能否正确运行,关键在于在调用库函数的配置对话框中,对该函数的输入输出参数进行正确配置。从该函数的原型声明中可以看出,该函数的调用规范上,本例需设置为C”调用方式,如图5所示。

5 MyFunc”函数调用规范设置为“C”方式

在调用库函数“参数”选项卡中,“MyFunc”函数本身返回值为“void”,所以,其返回类型设置为空即可。对其它6个参数设置如下:

l x0:“类型”设为“数值”;“数据类型”设为“8字节双精度”选项;“传递”设为“值”;

l deltx:同x0设置;

l length:“类型”设为“数值”;“数据类型”设为“有符号32位整型”选项;“传递”设为“值”;

l y:该参数为指向“double”的指针类型,对应LabVIEW的一维数组。所以,“类型”设为“数组”;“维数”设为1;“数据类型”设为“8字节双精度”;“数组格式”设为“数组数据指针”;最小尺寸设为“ ”;

l lastData:该参数在C语言中声明为“double &lastData”,为引用传递方式,对应LabVIEW中指向“double”类型的指针方式。所以,“类型”设为“数值”;“数据类型”设为“8字节双精度”;“传递”设为“指针”;

l status:该参数在C语言中声明为“Char* status”,即指向字符的指针,实际对应LabVIEW的字符串方式。所以,“类型”设为“字符串”;“字符串格式”设为“C字符串指针”;最小尺寸设为“ ”。

参数正确配置后,在图4程序框图中,需要说明的是,对于参数ystatus,由于在本质上都是一维数组,且参数设置的最小尺寸本例都设为了“ ”,所以需在程序框图中显式的预先分配一段不小于函数中需要的内存大小的空间。另外,从“MyFunc”函数的C语言实现代码中也可以看出,对于这两个参数,“MyFunc”函数中并没有分配新的内存空间,而是直接利用了外部传入的参数地址来进行对这两个参数的读或写操作。本例中,y参数使用了“初始化数组”函数生成了一个初始值为0、长度为“length”的双精度一维数组连接到该参数作为内存的初始化,status参数使用了字符串常量连接到该参数作为内存的初始化。当然,对这两个参数,也可以在库函数的配置对话框中直接指明其需要的大小,如对于y参数,最小尺寸可以设为“length”的值,对于status参数,最小尺寸可以设为具体的值,如512,这样设置以后,在程序框图中就可以不必对这两个参数作代码的初始化了。

结论

由上面的例子可以看出,LabVIEW中调用动态连接库DLL文件中函数的编程并不复杂,关键是要知道被调用函数的名称,并且保证输入、输出参数的顺序及数据类型要配置正确即可。

备注

大家如果有兴趣的话可以加关注并私信回复:LabVIEW001,则可获得该文章的DLL文件及LabVIEW原程序下载链接。欢迎加关注,共同交流。

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

版权声明


相关文章:

  • max31865精度(max30102测量精度)2026-05-20 12:27:09
  • 操作系统课程讲解(操作系统讲义)2026-05-20 12:27:09
  • pass平台的主要功能有哪些(pass平台的主要功能有哪些内容)2026-05-20 12:27:09
  • 苹果电脑装双系统步骤(苹果电脑装双系统方法)2026-05-20 12:27:09
  • xp虚拟机(XP虚拟机版)2026-05-20 12:27:09
  • u盘制作pe系统启动盘 Win7(u盘制作pe系统启动盘后还能用吗)2026-05-20 12:27:09
  • 华为模拟器怎么配置地址和网关(华为模拟器网关怎么设置)2026-05-20 12:27:09
  • win7虚拟机(如何在win11上安装win7虚拟机)2026-05-20 12:27:09
  • 社会阶级分层图片(社会阶级分层图片素材)2026-05-20 12:27:09
  • 网址访问拦截怎么解除(访问的网址被拦截咋办)2026-05-20 12:27:09
  • 全屏图片