關於無法解析外部符號的錯誤

2021-09-29 12:30:06 字數 452 閱讀 2120

無法解析外部符號,表面意思還是比較清楚的。

但當出了問題的時候呢,就不太好解決了。

最常出現問題的原因:

1.沒有包含標頭檔案

2.沒有包含庫檔案

3.靜態成員變數沒有在類外定義

這裡,我主要想說的是類中靜態成員變數的問題。

為啥我們沒有在類外定義靜態成員變數就會報這種錯誤呢。

分析一下編譯器對靜態成員變數的處理流程,相信大家就會明白了。

1.大家應該都知道靜態變數是在編譯期就分配空間的。當編譯器編譯程式的時候,不會檢視類中的靜態成員變數,或者說是碰到了也不會有反應,只會對類外發現的靜態變數進行記憶體分配。為什麼要這樣呢?不清楚,大家可以考慮考慮,相信編譯器這樣做一定有他的理由。

2.如果沒在類外定義,編譯器就不會在分配空間。所以呢,當程式執行的時候,類中的宣告的這個靜態變數實際沒有分配空間,所以一定找不到,就會報錯,錯誤型別無法解析外部符號。

無法解析外部符號

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

無法解析的外部符號

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

無法解析的外部符號

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