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中的一樣,數組格式為數組數據指針,這樣可以通過指針輸出多個返回值(但是每隔返回值數據類型不同怎么使用不清楚,之后解決了再補)

 然后接好輸入輸出的線就可以使用了,如果你的函數或者輸入輸出類型有問題就會報錯,檢查輸入輸出的數據類型后再嘗試,另外如果沒有給數組賦初值也會出錯。

 這樣運行就會報錯

但是賦初值之后就不會報錯而是正常運行

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM