【C++】error LNK2019: 無法解析的外部符號
阿新 • • 發佈:2018-11-04
轉:C++ error LNK2019: 無法解析的外部符號 錯誤解決方案
今天在實現類模板特例化的時候遇到一個問題,就是把類模板函式實現放到類的cpp檔案中,然後在main函式中使用這個類的時候,就會出現無法解析的外部符號:函式名(xxxx)等錯誤,那麼出現這個錯誤的原因是什麼呢?
原因就是現在的編譯裡不支援模板函式的申明和實現分開,要像上面那樣使用類成員函式,有以下兩種方法
1. 在使用這個類的檔案中包含#include“xxxx.cpp”
2.在類標頭檔案末尾包含模板實現函式'#include"xxxx.cpp"
這兩種方法都可以解決上面的問題。
(若編譯通過 連結未通過 應該考慮外部連結的情況 從專案的連結,專案的屬性設定考慮 而不是從程式碼本身的角度考慮)
(如果使用vs的IDE 可以在右鍵專案-屬性-連結器的下面 著重修改常規-附加庫目錄 輸入-附加依賴項)
下面我們來說下error2019會在什麼時候出現?
1. 在使用動態庫時候,沒有包含相應的lib
解決方案:#pragma comment( lib,"xxxx.lib");
2.函式只進行了申明而沒有進行定義
解決方案:為申明的函式新增函式實現
3.缺少.obj目標檔案
解決方案:從新設定檔案編譯的路徑,然後重新編譯