【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等)。
其他可供参考:
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 一个奇形怪状的面试题:Bean中的CHM要不要加volatile?
· [.NET]调用本地 Deepseek 模型
· 一个费力不讨好的项目,让我损失了近一半的绩效!
· 微软正式发布.NET 10 Preview 1:开启下一代开发框架新篇章
· 没有源码,如何修改代码逻辑?
· PowerShell开发游戏 · 打蜜蜂
· 在鹅厂做java开发是什么体验
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战