【LabVIEW】调用库函数(传入参数、返回值数据类型配置) | 您所在的位置:网站首页 › jacoco覆盖率测试 › 【LabVIEW】调用库函数(传入参数、返回值数据类型配置) |
一、调用库函数节点 这个知识点按照这一篇教程学习比较好:https://blog.csdn.net/where187/article/details/82388624 几个需要注意的点: 1、调用: 互连接口——库与可执行程序——调用库函数节点 2、在编写动态库函数时,要在同名头文件里函数声明处加上extern "C",如: extern "C" _declspec(dllexport) void ArrayFloorId(double *input, int inputLength, int *output); 否则在画程序图调用库函数进行配置的时候,函数名会加载错误(出现问号、@等其他字符)。 3、先获取数组大小再进行数组初始化,否则连线错误。 4、配置 线程设置可以任意,调用规范必须设置为C。 函数各参数的数据类型一定要配置正确,否则程序会出错。 5、技巧 是在对应的参数端口那里,右键,新建常量或者输入控件,然后再在新建出来的常量或者输入控件上面修改。因为新建出来的数据类型肯定是对的。
二、传入参数、返回值数据类型配置 1、传参为指针 void test(int x, int y, int *sum); //函数接受一个指向整数的指针
2、传参为数组 int test(int x, int y, int sum[], int length); //函数接受一个整数数组
3、传参为char类型int test(int x, int y, char *sum); //函数接受字符串
4、传递结构体和指向结构体的指针 void test(int x, int y, char *sum,struct simpleStructCircle *largerCircle); //任意结构体
5、返回指针两种方式: (1)作为返回值 int * test(void){ int *x = (int *) malloc(sizeof(int)); *x = 5; return x;}因为LabVIEW调用库函数节点只允许返回整数、字符串和Void类型,所以必须将指针作为表示内存地址的整数接受,并手动解引用指针以获得其值。 (2)Reference 指针通过函数的形参返回void test(int x, int y, int *sum){ //sum is a pointer *sum = x + y;} 同理,返回float类型数据: void test(float& Vesionnum){ Vesionnum = 1.32;}
6、关于返回值为BOOL的情况 要知道的是,在C里面没有定义布尔是基础类型,在C++里面才有专门的布尔类型bool(字长跟BYTE相同)。C++里面虽然有,但在实际开发中,发现大部分老的程序里在编写动态库的时候还是习惯自己定义BOOL。 #define FALSE 0#define TRUE 1 typedef long BOOL;//或者typedef int BOOL; 返回时:return FALSE; 在这种情况下,调用库函数节点返回类型就按照 typedef 后的类型来选择(long或int等)。
来源:https://forums.ni.com/t5/Developer-Center-Resources/Passing-and-Receiving-Pointers-with-C-C-DLLs-from-LabVIEW/ta-p/3522714?profile.language=zh-CN
其他可供参考: https://blog.csdn.net/mysolisoft/article/details/111056587 |
CopyRight 2018-2019 实验室设备网 版权所有 |