1. 程式人生 > >【C++】error LNK2019: 無法解析的外部符號

【C++】error LNK2019: 無法解析的外部符號

轉: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目標檔案

解決方案:從新設定檔案編譯的路徑,然後重新編譯