LabVIEW调用DLL动态链接库

LabVIEW调用DLL动态链接库

有些数据运算比如多个数组之间的处理、雨流计数法、卡尔曼滤波使用labview这样的图形编程语言实在过于麻烦,实现不难但有一定的逻辑复杂度,倒不如用C++或者matlab来实现,之后生成DLL供LabVIEW调用。

示例一

通过调用DLL实现数组求和。输入一个10个元素的数组,返回全部元素之和。

1.生成DLL

VS中选择创建动态链接库项目
在这里插入图片描述
在头文件和源文件文件夹分别创建相应的.h .cpp文件
在这里插入图片描述
在test.h中添加函数声明

extern "C" __declspec(dllexport) int qiuhe(int raw[10]);

在test.cpp中写函数体,注意要包含这两个头文件

#include "pch.h"//---
#include "test.h"//---

extern "C" __declspec(dllexport) int qiuhe(int raw[10])
{
	int add = 0;
	for (int i = 0; i < 10; i++)
		add += raw[i];
	return add;
}

点击生成解决方案就得到DLL文件。无法直接运行或者调试,可以间接使用。
在这里插入图片描述

2.写LabVIEW程序

程序框图页面——互联接口——库与可执行程序——调用库函数节点
在这里插入图片描述
选择刚刚生成的DLL文件,并选择函数名。
在这里插入图片描述
配置形参和返回值,必须和函数原型一模一样,否则运行有误或者无反应。设置返回值为I32数值。添加一个输入,配置为I32一维数组。
在这里插入图片描述
在这里插入图片描述
连接相关的组件。
在这里插入图片描述
前面板输入相关元素的值,并点击运行,出现正确的结果。
在这里插入图片描述

示例二

如何解决返回类型没有数组、指针的问题?如果针对一个数组处理后,想要返回整个数组,但是发现返回类型选项中只有空void、数值和字符串。我以一个将数组中元素全部向后位移一位的例子说明。
其实很简单,调用库函数节点默认会“返回”输入的所有形参,那我们只要获取到经过运算后的数组即可。当然,如果设计到多个数组运算或者其他较复杂的运算,你也可以自己在添加一个符合条件的形参,用于保存想要返回的计算结果,做间接的返回数组。
在这里插入图片描述
位移函数:

extern "C" __declspec(dllexport) void move(int raw[10])//间接返回raw[10]
{
	int temp = raw[0];
	for (int i = 0; i < 9; i++)
	{
		raw[i] = raw[i + 1];
	}
	raw[9] = temp;
}

labview:
在这里插入图片描述
点击运行后发现移位正常
在这里插入图片描述

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值