一、調用庫函數節點
這個知識點按照這一篇教程學習比較好:
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等)。
其他可供參考: