LabVIEW 调用库函数节点


一、dll文件的创建

dll文件的创建,我使用的是VS 2017,以此为例介绍:

1、新建一个dll项目,选择Visual c++》Windows 桌面》动态链接库(DLL)

 然后会得到如下图所示的Dll.cpp文件

 会得到一个空的头文件文件

 其中#pragma once 代表这个头文件只被编译一次,与

1 #ifndef _DELL1_H 2 #define _DELL1_H
3 
4 
5 
6 #endif

作用类似。

2、编写程序
在头文件写声明,值得注意的是,这里需要使用__declspec(dllexport)关键字修饰,表示这个函数是输出的函数可以在外部使用,这里的 extern “C” 表示的是用c的编译器来编译这个函数,这里的C是大写的要注意,这样编译出来的函数名就是我们希望的,否则就会产生不一样函数名。

extern "C" __declspec(dllexport) UINT8 choose(double *a, UINT8 *b);

去源文件Dll1.cpp定义函数体,别忘记在开头把Dll1.h头文件包括进来。

 1 #include "stdafx.h"
 2 #include "Dll1.h"
 3 
 4 double abs(double a)  5 {  6     return a > 0 ? a : -a;  7 }  8 
 9 
10 extern "C" __declspec(dllexport) UINT8 choose( double *a,UINT8 *b) 11 { 12     double T = *a; 13     double To = *(a + 1); 14     double Tb = *(a + 2); 15     double Tt = *(a + 2); 16     if (Tb < T | Tt < T) 17  { 18         if (abs(Tb - Tt) < 3) 19  { 20             *b = 1; 21             *(b + 1) = 1; 22  } 23         else
24  { 25             *b = 0; 26             *(b + 1) = 0; 27 
28  } 29  } 30     else
31  { 32         *b = 0; 33         *(b + 1) = 0; 34 
35  } 36 
37     return 1; 38 }

生成dll,在“生成”》生成解决方案,如果没报错的话就能生成dll文件,实际生成的时候,如果之前这个dll文件已经zailabview使用了,那么生成的时候可能会报错(即使是复制出去的dll)关闭labview重新尝试。

 

之后会在羡慕文件夹的“同级目录”下的Debug文件夹出现编译好的dll文件和lib文件,不是项目文件夹下的那个。

3、在LabVIEW中使用dll

在labview中使用dll很简单只需要后面板上右键》互连接口》库与可执行…》调用函数库…

 然后配置“调用库函数节点”,选择好路径和选用的函数(我这里是之前配置的,用的是Dell2.dll库)

再去参数里增加返回值和输入参数,值得注意的是,这里的数据类型必须要匹配dll库里的数据类型不然会出现各种各样的问题,另外如果传入的是一个数组的函数名(即数组首地址)那么这里需要选用的类型是数组,数组的类型按照你的要求选择但是必须和dll中的一样,数组格式为数组数据指针,这样可以通过指针输出多个返回值(但是每隔返回值数据类型不同怎么使用不清楚,之后解决了再补)

 然后接好输入输出的线就可以使用了,如果你的函数或者输入输出类型有问题就会报错,检查输入输出的数据类型后再尝试,另外如果没有给数组赋初值也会出错。

 这样运行就会报错

但是赋初值之后就不会报错而是正常运行

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM