鏈結器工具錯誤 LNK2011

2022-01-31 07:32:53 字數 1115 閱讀 4896

問題描述:

原因分析:

msdn關於該錯誤描述如下(

如果使用預編譯頭,link 要求必須鏈結所有與預編譯頭一起建立的物件檔案。 如果您有用來生成用於其他原始檔的預編譯頭的原始檔,現在必須包括與預編譯頭一起建立的物件檔案。例如,如果編譯乙個名為 stub.cpp 的檔案,以建立用於其他原始檔的預編譯頭,則必須與 stub.obj 鏈結,否則就會得到此錯誤。 在下列命令列中,第一行用於建立預編譯頭 common.pch,它與第二行和第三行中的 prog1.cpp 和 prog2.cpp 一起使用。 檔案 stub.cpp 只包含#include行(與 prog1.cpp 和 prog2.cpp 中的#include行相同),並只用於生成預編譯頭。 在最後一行中,必須鏈結 stub.obj 以避免 lnk2011。 

cl /c /yccommon.h stub.cpp  

cl /c /yucommon.h prog1.cpp

cl /c /yucommon.h prog2.cpp

link /out:prog.exe stub.obj prog1.obj prog2.obj

而在libapriconv_ccs_modules和libapriconv_ces_modules庫中,均使用了對應的預編譯標頭檔案,但在link選項中沒有新增對應的obj編譯物件。

解決方案:

修改apr-iconv\build\modules.mk.win檔案:

.c.so:

cl $(all_cflags) /fo$*.obj /yuiconv.h /c $<

link $(all_ldflags) $(modres).obj $*.obj $(api_libs) /out:$@ \

/base:@"..\build\baseaddr.ref",$(@f)

if exist [email protected] \

mt -nologo -manifest [email protected] -outputresource:$@;2 \

& del "[email protected]"

del "$*.exp" & del "$*.lib"

在link命令中新增$(modres).obj項。

鏈結器工具錯誤 LNK2001

無法解析的外部符號 symbol 引用了鏈結器無法在庫和物件檔案中找到的內容 如函式 變數或標籤 可能的原因 該錯誤資訊之後為致命錯誤 lnk1120。具體原因 問題 編譯和鏈結問題 將用 mt 編譯的 與庫 libc.lib 鏈結會在 beginthread beginthreadex endth...

鏈結器工具錯誤 LNK2001

無法解析的外部符號 symbol 引用了鏈結器無法在庫和物件檔案中找到的內容 如函式 變數或標籤 可能的原因 該錯誤資訊之後為致命錯誤 lnk1120。具體原因 問題 編譯和鏈結問題 將用 mt 編譯的 與庫 libc.lib 鏈結會在 beginthread beginthreadex endth...

鏈結器工具錯誤 LNK1123

轉換到 coff 期間失敗 檔案無效或損壞 輸入檔案必須具有通用物件檔案格式 coff 格式。如果輸入檔案不是 coff,link 則鏈結器會自動嘗試將 32 位 omf 物件轉換為 coff,或執行 cvtres.exe 來轉換資源檔案。此訊息指示鏈結器不能轉換該檔案。從另乙個安裝的 visual...