無法解析外部符號,表面意思還是比較清楚的。
但當出了問題的時候呢,就不太好解決了。
最常出現問題的原因:
1.沒有包含標頭檔案
2.沒有包含庫檔案
3.靜態成員變數沒有在類外定義
這裡,我主要想說的是類中靜態成員變數的問題。
為啥我們沒有在類外定義靜態成員變數就會報這種錯誤呢。
分析一下編譯器對靜態成員變數的處理流程,相信大家就會明白了。
1.大家應該都知道靜態變數是在編譯期就分配空間的。當編譯器編譯程式的時候,不會檢視類中的靜態成員變數,或者說是碰到了也不會有反應,只會對類外發現的靜態變數進行記憶體分配。為什麼要這樣呢?不清楚,大家可以考慮考慮,相信編譯器這樣做一定有他的理由。
2.如果沒在類外定義,編譯器就不會在分配空間。所以呢,當程式執行的時候,類中的宣告的這個靜態變數實際沒有分配空間,所以一定找不到,就會報錯,錯誤型別無法解析外部符號。
無法解析外部符號
先檢視專案屬性裡附加目錄庫包不包含該檔案 資料夾屬性是不是唯讀 最後可能除錯的配置系統位數不對 函式未宣告或未實現等。最近又碰到了新的無法解析外部符號的問題。我在乙個dll專案中引用了另乙個dll專案的某個類成員函式,但該類並沒有匯出,於是出現無法解析的外部符號問題,載入dll專案只能呼叫其匯出的類...
無法解析的外部符號
在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...
無法解析的外部符號
在使用vs2008除錯程式的過程中,經常會出現無法解析的外部符號問題,可能的原因有很多種,下面這些是我一年來積累的經驗.僅供參考.考慮可能的原因 0 出現無法解析可能是因為lib檔案不正確,比如64位的編譯配置,結果使用的是32位的lib包.1 只寫了類宣告,但還沒有寫實現類,造成呼叫時無法解析 2...