鏈結錯誤 2001 2019

2022-07-01 23:57:13 字數 839 閱讀 7777

今天製作乙個關於bullet的模組,在測試工程中正常使用,引入新工程之後一鏈結失敗,償試了網上能找到的所有方法,均未能成功。期間也想過:因為bullet模組化設計,需要使用巨集定義來選擇使用哪些模組。在原測試工程中償試尋找該選擇巨集,未發現相關巨集,因此未繼續在此方向上查詢原因。但最終在原測試工程中的預編譯巨集設定中發現bullet工程的選擇巨集,拷貝到新工程中正常編譯、鏈結成功。

2、你自己寫的函式宣告的標頭檔案也寫了函式定義的cpp檔案,卻依然出現lnk2019錯誤。

可能原因:忘記將這兩個檔案加入工程了。

3、你自己寫的函式宣告的標頭檔案,也寫了函式定義的cpp檔案也加入工程了而且你很確定函式體肯定是在這個庫檔案中,卻依然出現lnk2019錯誤。

可能原因:c語言和c++語言混編,因為c++支援函式過載所以c++編譯器生成的庫檔案中的函式名會面目全非,例如c編譯器會生成 _readregmark 這個函式名,而c++編譯器則生成了"void __cdecl readregmark(char *)" (?readregmark@@yaxpad@z)這麼個函式名。當你的函式是用c語言寫的,vs編譯器會按c語言規則編譯,但鏈結器卻不知道還傻傻的用c++規則的函式名去找結果就找不到了。解決:在c語言的標頭檔案中加入以下**

1

#ifdef __cplusplus

2extern"c

"9#endif

4、模板宣告和實現要放在同一資料夾中。模版函式宣告與實現檔案要在同一資料夾中。有時候前面函式的宣告 與 後面的 函式的定義 時的引數型別不同時,compile能通過,但link會出現lnk2019錯誤!

5、內聯函式定義在標頭檔案中(一般需要定義在cpp中)。

6、錯誤的工程型別等等。

2001鏈結錯誤

鏈結錯誤 出現這個2001錯誤,是因為鏈結失敗,然而鏈結失敗,又是因為以下原因 1.你在標頭檔案中宣告了函式,但是cpp檔案缺少了函式實現部分。2.忘了將這個.h,cpp add to project 3.以上兩種情況都沒有做,沒有將它對應的lib檔案新增到setting link中,或者在程式中用...

VC鏈結錯誤大全

vc 時經常會遇到鏈結錯誤lnk2001,該錯誤非常討厭,因為對於程式設計者來說,最好改的錯誤莫過於編譯錯誤,而一般說來發生連線錯誤時,編譯都已通過。產生連線錯誤的原因非常多,尤其lnk2001錯誤,常常使人不明其所以然。如果不深入地學習和理解vc 要想改正連線錯誤lnk2001非常困難。初學者在學...

常見編譯鏈結錯誤

1.no such file or directory 首先檢查檔案路徑是否包含,如某標頭檔案不存在,一般是標頭檔案的路徑沒有include進來 其次檢查是否有巨集定義,巨集定義是否已生效。2.in function undefined 一般是鏈結錯誤,所需的的庫沒有鏈結編譯bin檔案時,鏈結了動態...