無法解析的外部符號

一劍平江湖發表於2015-04-09
根據個人遇到這個錯誤時的記錄,原因可以分為一下幾種: 
原因一: 只是在.h裡面宣告瞭某個方法, 沒有在cpp裡面實現 。 
具體講,有時候在標頭檔案中宣告瞭需要的方法,確實忘記了在原始檔中實現; 
有時候在標頭檔案中宣告瞭需要的方法,在原始檔中實現了該方法,但是卻遺留了方法名前的“classname::”; 
有時候在標頭檔案中宣告並實現了需要的方法,但是在程式碼調整時直接把方法copy到原始檔時,並沒有在函式前加“classname::”; 
原因二: 宣告和實現都有了,但是 沒有新增到vs的project 目錄下面,這時候如果在其他.cpp中引用的,就會出現這個錯誤。 
具體講,匯入自己以前的程式碼或其他現有程式碼時,複製到工程下目標資料夾後,有時候會在vs的project目錄下忘記或遺漏新增這些檔案,就可能引起這個錯誤。 
原因三: 有時候工程比較大時,會直接加入一些原有的基礎工程來提交效率,如果對原有工程不太熟悉,在工程中加入了有 相同名字的檔案或者類 時,同樣會引起這個問題。 
這種情況下的具體原因是編譯時會出現相同名字的中間檔案,因為編譯有先後順序,出現了檔案替換,在其他檔案引用被替換掉的檔案時,導致最後會出現了個連線問題。 
原因四: 行內函數 相關,如果行內函數的宣告在標頭檔案中,實現在原始檔中,這時候如果其他類中只是包含了標頭檔案,在呼叫這個行內函數時也會出現這個問題。

相關文章