返回首頁 - 當前索引 -
主 題:
命令列編譯鏈結,出現lnk2019錯誤,怎樣解決?
/out:test01.exe
test01.obj
test01.obj : error lnk2019: 無法解析的外部符號 __imp__messageboxa@16 ,該符號在
函式 _messageboxprintf 中被引用
test01.obj : error lnk2019: 無法解析的外部符號 __imp__getsystemmetrics@4 ,該符
號在函式 _winmain@16 中被引用
test01.exe : fatal error lnk1120: 2 個無法解析的外部命令
請問我如何確定連線的引數才能正確鏈結?????
無法解析的外部符號「symbol」,該符號在函式「function」中被引用
在 function 中找到了未定義的外部符號 (symbol)。若要解決此錯誤,請提供符號定義或移除引用它的**。
請看下面的示例:
extern int i;
extern void g();
void f()
int main()
如果在生成中包含的某個檔案中沒有定義 i 和 g,鏈結器將生成 lnk2019。可以新增這些定義,方法是將包含這些定義的源**檔案包括為編譯的一部分。或者可以將包含這些定義的 .obj 或 .lib 檔案傳遞給鏈結器。
對於從早期版本公升級到當前版本的 c++ 專案,如果定義了 __unicode 並且入口點為 winmain,需要將入口點函式的名稱更改為 _twinmain 或 _tmain。
導致 lnk2019 的常見問題有:
符號宣告包含拼寫錯誤,以致於符號宣告與符號定義不同。
使用了乙個函式,但其引數的型別或數量與函式定義不匹配。
函式宣告使用和函式定義使用中的呼叫約定(__cdecl、__stdcall 或__fastcall)不同。
符號定義在編譯為 c 程式的檔案中,而符號是在 c++ 檔案中不帶 extern "c" 修飾符宣告的。在此情況下,請修改宣告,例如不是使用:
extern int i;
extern void g();
而使用:
extern "c" int i;
extern "c" void g();
同樣,如果在將由 c 程式使用的 c++ 檔案中定義符號,請在定義中使用 extern "c"。
符號定義為靜態,但稍後在檔案外部被引用。
沒有定義靜態類成員。例如,應單獨定義下面類宣告中的成員變數 si:
#include struct x ;
// int x::si = 0; // un***ment this line to resolve
void main()
/verbose 鏈結器選項幫助您檢視鏈結器引用的檔案。dumpbin 實用工具的 /export 和 /symbols 選項還可以幫助您檢視 dll 和物件/庫檔案中定義的符號。
該問題已經結貼
如何用MinGW 命令列編譯鏈結c c
一直用vs,看現在eclipse很火,便想弄一下玩玩,用到了mingw,繼而用到了gcc,對gcc相當的不熟悉,從頭開始學一些簡單的吧。簡單的gcc用法 gcc命令提供了非常多的命令選項,但並不是所有都要熟悉,初學時掌握幾個常用的就可以了,到後面再慢慢學習其它選項,免得因選項太多而打擊了學習的信心。...
CentOS 命令列安裝matlab2018a
注意使用root許可權,以下命令均使用root許可權建立掛載目錄,並將映象掛載至目錄上。mkdir mnt rom mount o loop r2018a glnxa64 1.iso mnt rom解壓crackunzip matlabr2018alinux64crack.zip cp matlab...
命令列編譯Solution
c windows devenv.com microsoft r 開發環境 7.10.3077 版。c microsoft corp 1984 2001 保留所有權利。用法 devenv solutionfile projectfile anyfile.ext switches 可以呼叫 deven...