當前位置:編程學習大全網 - 源碼下載 - 如何在LabVIEW下調用DLL

如何在LabVIEW下調用DLL

動態鏈接庫英文為DLL,是Dynamic Link Library 的縮寫形式,DLL是壹個包含可由多個程序同時使用的代碼和數據的庫。

在LabVIEW中,壹維數組、二維數組、字符串是可以和C/C++中的相應數據類型直接對應起來,因此比較容易實現。那麽對於C/C++語言中的結構體,大家也會想到可以和LabVIEW中的簇對應起來,但是在具體的應用中還會涉及到壹些細節,需要我們去留意,否則很可能調用不成功,甚至由於非法讀寫內存導致系統崩潰。另外,在LabVIEW中的返回值只有數值、字符串和指針,因此當DLL中的函數返回值為結構體時該如何處理?當輸入參數包含指向函數的指針時該如何處理?

在解決這些問題之前,先推薦四篇文檔,有長有短,但是都寫得很細致:

1) 如何通過調用庫函數結點使用DLL——Configuring the Call Library Function Node to call a Simple DLL 鏈接:/content/docs/DOC-9069

2) 如果是簡單的數據類型(如數值、數組、字符串、簡單結構體),在LabVIEW和DLL之間傳遞或接收指針,LabVIEW能夠自動的正確的解析指針——Passing and Receiving Pointers with C/C++ DLLs from LabVIEW 鏈接:/content/docs/DOC-9080

3) 因為LabVIEW隱藏了對內存的管理,沒有開放的函數提供對具體內存地址的直接訪問,所以當C/C++中返回的是壹個指針,並且LabVIEW又不能自動解析這個指針時,該怎麽辦——Dereferencing Pointers from C/C++ DLLs in LabVIEW 鏈接:/content/docs/DOC-9091

4) 介紹導入***享庫工具(Import Shared Library Wizard),當我們拿到壹個DLL和它的頭文件(.h)時,利用該工具,能夠自動生成針對DLL每個函數的子VI,最大的好處是不需要再手動設置輸入輸出參數並進行類型匹配,當然它有壹定的局限性,比如復雜的類型它匹配不了——Creating Wrapper VIs for C/C++ DLL functions using the Import Shared Library Wizard 鏈接:/content/docs/DOC-9078

5) 大家也可以通過這篇文檔直入主題,因為它寫得很全,包含詳細的VI和C/C++源代碼,並且有壹個目錄供大家索引,它回答了以下情況的問題:1)數值型2)壹維數組 3)字符串 4)二維數組 5)簡單結構體 6)復雜結構體。每種情況又包括:返回值、返回指針、傳遞值、傳遞指針——Calling C/C++ DLLs Containing Simple and Complex Datatypes from LabVIEW 鏈接:/content/docs/DOC-9079(看這些VI調用的時候,壹定要參考C/C++中的原代碼來進壹步的理解,原代碼在其鏈接中都提供下載)

但是這篇文檔有幾處地方運行的時候出現錯誤,列舉如下:

1. 2D Dimensional Array –c. Passing a parameter (Pass by Value) Function

2. Simple Struct – a. Returning a value (return statement) Function

  • 上一篇:國民位面戰劇情模式如何玩BOSS
  • 下一篇:免費的知識付費平臺有哪些
  • copyright 2024編程學習大全網