- DLL 有用資源
- DLL - 快速指南
- DLL - 有用資源
- DLL - 討論
DLL - 提示
編寫 DLL 時請牢記以下提示:
使用正確的呼叫約定(C 或 stdcall)。
注意傳遞給函式的引數的正確順序。
切勿使用直接傳遞給函式的引數來調整陣列大小或連線字串。請記住,您傳遞的引數是 LabVIEW 資料。更改陣列或字串大小可能會導致崩潰,因為覆蓋了儲存在 LabVIEW 記憶體中的其他資料。如果您傳遞 LabVIEW 陣列控制代碼或 LabVIEW 字串控制代碼,並且使用 Visual C++ 編譯器或 Symantec 編譯器編譯 DLL,則可以調整陣列大小或連線字串。
將字串傳遞給函式時,選擇要傳遞的字串的正確型別。C 或 Pascal 或 LabVIEW 字串控制代碼。
Pascal 字串的長度限制為 255 個字元。
C 字串以 NULL 結尾。如果您的 DLL 函式以二進位制字串格式(例如,透過 GPIB 或序列埠)返回數值資料,它可能會將 NULL 值作為資料字串的一部分返回。在這種情況下,傳遞短(8 位)整數陣列最可靠。
如果您正在使用資料陣列或字串,則始終傳遞一個足夠大的緩衝區或陣列來容納函式放入緩衝區的任何結果,除非您將它們作為 LabVIEW 控制代碼傳遞,在這種情況下,您可以使用 Visual C++ 或 Symantec 編譯器下的 CIN 函式調整它們的大小。
如果您使用的是 _stdcall,請在模組定義檔案的 EXPORTS 部分列出 DLL 函式。
在模組定義檔案的 EXPORTS 部分列出其他應用程式呼叫的 DLL 函式,或在函式宣告中包含 _declspec (dllexport) 關鍵字。
如果您使用 C++ 編譯器,請在您的標頭檔案中使用 extern .C.{} 語句匯出函式,以防止名稱修改。
如果您正在編寫自己的 DLL,則不應在另一個應用程式將 DLL 載入到記憶體時重新編譯 DLL。在重新編譯 DLL 之前,請確保所有使用該特定 DLL 的應用程式都已從記憶體中解除安裝。它確保 DLL 本身未載入到記憶體中。如果您忘記這一點並且編譯器沒有警告您,則您可能無法正確重建。
使用另一個程式測試您的 DLL,以確保函式(和 DLL)行為正確。使用編譯器的偵錯程式或一個簡單的 C 程式(您可以在其中呼叫 DLL 中的函式)對其進行測試將幫助您確定可能的困難是 DLL 本身固有的還是與 LabVIEW 相關的。