vs的各種常見編譯,鏈結錯誤

2021-08-15 13:39:26 字數 1314 閱讀 3313

在上手vs寫**,搞工程的階段,總會遇到各種各樣的編譯錯誤,鏈結錯誤,而每個錯誤都有乙個編碼,做好總結,以後可以幫助我們更好更快地定位問題,解決問題

1. error lnk2019: 無法解析的外部符號 __fun2@8,該符號在函式 "public: static void __cdecl ***::fun1(struct hwnd__ *,struct hrgn__ *,bool,bool)" (?drawaero@omdraw@@saxpauhwnd__@@pauhrgn__@@_n2@z) 中被引用

這是乙個鏈結錯誤,也就是在fun1函式中呼叫了fun2函式,編譯器找了fun1函式的宣告,但是鏈結器沒有找到fun2函式的定義,所以就是乙個無法解析的外部符號。__fun2@8這樣的乙個形式是vs特有的c++的函式名稱重整。

2. error lnk2011: 映像可能不能執行d:***x.lib(yyyy.obj)

3.error lnk1104: 無法開啟檔案「c:\users\admin\desktop\***x\build\lib\debug\***.lib」

鏈結錯誤: 匯入該lib檔案發生錯誤,很有可能是在該檔案路徑下不存在***.lib檔案,小概率情況是***.lib損壞了(本人被坑過)

4. error c2440: 「初始化」: 無法從「const char [37]」轉換為「int」

資料型別不同,不能賦值,如字面意思

5.error c2664: 「std::string func(const unsigned char *,int)」: 無法將引數 1 從「const char *」轉換為「const unsigned char *」

型別不一樣,又無法隱式型別轉換,只能自己通過顯式的強制型別轉換了。

error c2664: 「bool makesuredirectorypathexists(lpctstr)」: 無法將引數 1 從「std::string」轉換為「lpctstr」

lpctstr其實就是const char *(字元陣列),string過載了賦值和拷貝建構函式。但是無法讓string直接轉成char陣列。

please #define _afxdll or do not use /md[d]d:\software\vs_2013\vc\atlmfc\include\afx.h241apitest

在vs新建的win32專案中要想使用mfc的東西,就會報改錯。解決方法不記得了。

7.error c2679: 二進位制「<<」: 沒有找到接受「std::string」型別的右運算元的運算子(或沒有可接受的轉換)

vs小技巧:

vs自動對齊:  1, ctrl+a  2, ctrl+k  3, ctrl+f

常見編譯鏈結錯誤

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

gtest編譯鏈結錯誤

在mac上使用googletest編寫單元測試,不需要額外鏈結pthread。但是在linux上 github action的預設構建機器ubuntu20.04lts 上,編譯鏈結gtest 需要額外鏈結pthread,並且,需要注意的是,使用cmake構建時,gtest和pthread鏈結順序 需...

GCC G 常見鏈結錯誤

鏈結錯誤的直接表現就是 符號未定義。幾種常見的鏈結錯誤如下 缺少 o檔案 對策 將相應的檔案加入makefile或命令列 o檔案未更新 對策 刪除舊 o檔案重新編譯或者依賴於最新的depend來編譯 增刪檔案時確保make depend 缺少相應的庫檔案 對策 將相應的檔案加入makefile或命令...