鏈結時出現"無法解析的外部符號, 錯誤資訊(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...