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:
在這裏插入圖片描述
點擊運行後發現移位正常
在這裏插入圖片描述

發佈了4 篇原創文章 · 獲贊 2 · 訪問量 2219
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章