1. 程式人生 > >c++/visual studio常見問題【1】

c++/visual studio常見問題【1】

LNK2001錯誤

參考https://docs.microsoft.com/en-us/cpp/error-messages/tool-errors/linker-tools-error-lnk2001?view=vs-2017

無法解析的外部符號"符號"。說明程式中用到的某個符號,連結器無法在任何庫或者obj物件檔案中找到。

原因:

1)編碼方面的原因

a) 變數名稱不一致,比如一個檔案裡定義了var1,在另一個檔案裡卻使用VAR1。

b) 在原始碼中使用行內函數,此時該函式從檔案外部無法訪問。應該在標頭檔案中定義行內函數。

c) 從c++程式中呼叫c函式,由於編譯器對c/c++函式命名不同,所以出現錯誤。需要在c函式前加上exern "C"。

d) 

2) 編譯連結方面的原因

a) 未新增相應的lib檔案;

b) release和debug模式不匹配。比如,在release模式下呼叫debug模式編譯的庫。

變數和函式需要定義(defined),即需要被分配了相應的儲存空間或者有函式實現的程式碼段。此外,c++連結器在命名中會在變數或函式名上加上型別資訊等,因此如果宣告和定義的型別資訊不匹配,會出現錯誤。

 

比如,專案中檔案有c,c++,會出現Lnk2001錯誤。或者把c改名cpp,或者