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中的一样,数组格式为数组数据指针,这样可以通过指针输出多个返回值(但是每隔返回值数据类型不同怎么使用不清楚,之后解决了再补)

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

 这样运行就会报错

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

 

原文地址:https://www.cnblogs.com/ybqjymy/p/15383910.html