Labview调用dll的方法与注意事项


本文的主要目的是使用lv读取外设数据,由于lv调用dll是存在限制的,dll语言需要是C/C++,故dll由C语言在VS2017下封装。

软件环境

本文所使用的软件环境为labview2018(32bit),VS2017。

VS2017封装dll动态链接库

封装dll,我主要参考的博文是链接: link.
对于这个过程中出现的问题值得一提的是:
博文里使用的源函数是C++(.cpp)格式的,而我外设的开发程序使用的又是C语言(.c),完全按照原博主的方法来的话,生成的文件里是没有.lib文件的,所以这里我们还需要自己写一个.def文件(关于.def文件可以参考link.),如下所示:

编写.def
之后完全按照第一个链接得到三个必须的文件(头文件(.h),源文件(.c),库文件(.lib))。

labview调用dll库函数

展示整个lv程序
在这里插入图片描述
要注意的点是:lv的调用库函数的控件里面的函数原型,其返回类型不能是指针类,只能是数组和字符串:
在这里插入图片描述
同时,由于需要同时得到外设的三个分量的值,而C语言是不能返回数组的,同时lv里函数原型的类型也不能是指针。解决办法是在函数形参使用指针(如图),这里使用的办法是在函数原型里传进一个指针(即对应图里的*x1),注意,如果这里使用的是值(x1)的话,就只能得到你所初始化的数,这个涉及到局部变量销毁的一些原因,就不往下说了。