MFC調用外部dll時,出現無法解析的外部符號的解決方法)


最近在一個MFC工程文件中調用了多個dll和lib文件,包括matlab和can連接文件,時常出現“無法解析的外部符號”的錯誤,特此記錄解決方法。

 

通常出現這個問題的原因有以下幾個:

1.沒有導入相應的lib庫文件。

2.類成員聲明了,但是卻沒有定義。也可能是定義的與聲明的不一致。

3.沒有包含響應的頭文件和源文件。

4.沒有在項目屬性頁的鏈接器的命令行選項加入相應的類包。

5.沒有在c++包含目錄和庫目錄加入相應的類包路徑。

6.dll的版本與平台不兼容,64位和32位的差別。

 

通常對於第三方的SDK一般只提供給我們DLL,並提供相應的頭文件及LIB文件;這里的LIB文件是鏈接時需要的,它包含了DLL中函數的想關信息,不是靜態編譯產生的靜態庫,因此我們只需要在項目添加對這些LIB的依賴。

一般情況下按照項目--》屬性--》配置屬性--》鏈接器-》輸入--》附加依賴項

的方式在其中加入所需庫文件,注意把庫文件寫進去,每個庫文件后加分號,同時在

“鏈接器--》常規--》附加庫目錄”中填入相應庫所在目錄。

 

為了保險可以在

VC++目錄--》常規--》包含目錄和VC++目錄--》常規--》庫目錄中中填入相應庫所在目錄。

然后在工程文件中加入頭文件#include "ControlCAN.h"

以及

#pragma comment(lib,"ControlCAN.lib")

 

 

如果完成這些操作之后還是存在無法解析的外部符號的問題,應該是版本與平台不兼容。將當前平台(win32/x64)替換成(x64/win32)再進行編譯,一般就可以通過了。

需要再新的平台重新設置上述操作,並將目標計算機改為當前平台。

 

 

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM