LabWindows™/CVI 錯誤:使用 DLL 時出現“Undefined symbol...”

更新 Nov 8, 2023

產品資訊

軟體

  • LabWindows/CVI

問題敘述

我在 LabWindows/CVI 中使用 DLL,當我構建項目時出現以下錯誤:

Undefined symbol '___ImageBase' referenced in "c:\program files (x86)\national instruments\cvi2015\bin\msvc\cvistart.lib".

解決方案

上面的錯誤是一個連結器錯誤,表明編譯器找不到 ImageBase 的定義。由於這僅在呼叫程式中的 DLL 時發生,這表明問題出在所使用的 DLL 的連結器檔案(.lib 檔案)上連結器檔案很可能是專門為不同的編譯器產生的,它的 ImageBase 定義(由連結器建立的特殊符號)與 LabWindows/CVI 在cvistart.lib中的定義衝突。

嘗試修復連結器問題的最佳方法是重新產生導入library。如果您在中打開 DLL 的標頭 LabWindows/CVI,您會發現Options >> Generate DLL Import Library...這將允許您定位 DLL 並產生一個新的 .lib 檔案。完成後,刪除舊的連結器檔案,並將其替換為新產生的檔案。

一種解決方法是將debug級別降低到最低階別,這將減少一些選項但仍然具有debug功能。這可以透過點擊Options >> Build Options >> Debugging Level來完成。將debug級別更改為無執行時檢查。