從LabVIEW調用動態鏈接庫(DLL)

更新 Nov 10, 2020

我有用C / C ++編寫的代碼/ API,我希望能夠在LabVIEW中調用它。用C代碼創建動態鏈接庫(DLL)後,如何從LabVIEW中調用DLL?

若要調用DLL,首先必須確定該庫是C / C ++ DLL還是Microsoft .NET Assembly / .NET DLL。

若要確定您具有哪種類型的庫,可以檢查DLL文件的可移植可執行(PE)標頭。

DLL是C / C ++ DLL:

  1. 如果沒有頭文件,請查找頭文件(* .h)或函數原型定義,請跳至步驟4。
  2. 確定您要調用的功能。請注意,函數的參數是否包含原始數據類型參數(例如int,char,double等),或者它們是否包含複雜的數據類型(例如struct,數組或向量)。
  3. 如果函數不包含任何復雜的數據類型,並且您具有頭文件(* .h),則可以使用導入共享庫嚮導創建一個包含該頭文件中的函數的LabVIEW庫。您可以在工具»導入»共享庫(.dll)...中找到該選項繼續執行嚮導。
  1. 如果沒有頭文件,則需要使用“ 調用庫功能節點”以及.DLL的正確文檔。下圖顯示了調用庫功能節點在托盤中的位置:
  1. 雙擊“呼叫庫功能節點”以配置該節點。在配置窗口的“功能”選項卡上,輸入DLL的路徑,然後選擇要調用的功能。
  1. 如果要調用的函數包含複雜的數據類型,則需要在“調用庫函數”節點的配置對話框中手動定義函數原型(如果DLL已使用類型庫編譯,則參數數據和返回類型將自動定義)。導航到配置窗口中的“參數”選項卡。在這裡,您將添加參數並修改返回類型,直到窗口底部的函數原型與DLL的函數定義匹配為止。


DLL是.NET程序集:

  1. 為了在LabVIEW中使用.NET程序集,只需使用.NET面板(Connectivity ».NET 查找所有可用功能。
  2. 首先使用構造器節點來實例化.NET程序集中的類。可以通過雙擊“構造器”節點以打開“選擇.NET構造器”對話框來完成。

  1. 通過簡單地將類引用從構造函數節點連接到屬性或調用節點,即可使用屬性和調用節點來訪問類的屬性和方法。如以下VI片段所示。

注意:該圖像是LabVIEW片段,其中包含可在項目中重複使用的LabVIEW代碼。要使用代碼段,請右鍵單擊圖像,將其保存到計算機,然後將文件拖到LabVIEW圖表上。

附加信息

.NET DLL也稱為.NET程序集,在.NET編程中很有用。 .NET DLL使用公共語言運行庫(CLR)和.NET Framework來管理DLL中的功能。

請注意,如果您的複雜數據類型是具有多個原始數據類型(int,double,char)的結構,則可以使用基於C的語言創建包裝DLL,以簡化函數調用。

C / C ++結構並不總是與LabVIEW數據類型直接相關,並且包裝DLL可以適當地提取複雜結構的內容並將其轉換為原始術語。例如,您正在使用的DLL利用C中的結構,其中包含char *(字符串或字符數組)。包裝器DLL可以包含帶有char *參數的包裝器函數,該參數將char *放入結構中,並依次調用原始DLL。在LabVIEW中,您可以調用包裝DLL函數。或者,如果您具有DLL源代碼,則可以直接修改DLL,以便它採用char *而不是結構。

LabVIEW示例查找器提供了完整的功能示例,說明瞭如何在LabVIEW中正確調用外部代碼。查看幫助>>查找示例>>與外部應用程序通信