鏈結時出現無法解析的外部符號排錯

2021-06-20 04:59:15 字數 713 閱讀 3724

鏈結時出現"無法解析的外部符號, 錯誤資訊(cpp編譯出的符號)

batviewdlg.obj : error lnk2001: unresolved external symbol 

"unsigned char __stdcall getpwrcapabilities(struct system_power_capabilities *)"

(?getpwrcapabilities@@ygepausystem_power_capabilities@@@z)

用dumpbin觀察對應dll/lib的匯出符號資訊

dumpbin /exports *.dll

dumpbin /exports *.lib

對應的lib/dll的匯出符號資訊(extern "c" 所編譯出的符號)

_getpwrcapabilities@4

所編譯出的符號資訊和匯出符號資訊不匹配所造成的

自己的**採用cpp的方式編譯而到處符號的**採用c的方式編譯(_stdcall)

將所引用的標頭檔案 用extern "c"包裝所引用的標頭檔案以解決問題

#ifdef  __cplusplus  

extern "c"

#endif

無法解析外部符號

先檢視專案屬性裡附加目錄庫包不包含該檔案 資料夾屬性是不是唯讀 最後可能除錯的配置系統位數不對 函式未宣告或未實現等。最近又碰到了新的無法解析外部符號的問題。我在乙個dll專案中引用了另乙個dll專案的某個類成員函式,但該類並沒有匯出,於是出現無法解析的外部符號問題,載入dll專案只能呼叫其匯出的類...

無法解析的外部符號

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...

無法解析的外部符號

在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...