亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

解決LNK4098:defaultlib'MSVCRT'與。沖突

解決LNK4098:defaultlib'MSVCRT'與。沖突

精慕HU 2019-09-19 09:04:02
這個警告:LINK : warning LNK4098: defaultlib 'MSVCRT' conflicts   with use of other libs; use /NODEFAULTLIB:library在Visual Studio中是一個相當常見的警告。我想了解它的確切原因以及正確的方法(如果有的話)來處理它。這出現在一個編譯的調試版本中/MDd。該項目與windows之類的東西相關聯,Version.dll并pdh.dll與之相關MSVCRT.dll。顯然,我沒有這些的調試版本,無法編譯它們。所以我添加/NODEFAULTLIB:MSVCRT到鏈接器命令行,它實際上刪除了警告。但這實際上做了什么?為什么有必要?
查看完整描述

3 回答

?
30秒到達戰場

TA貢獻1828條經驗 獲得超6個贊

vc \ lib中有4個版本的CRT鏈接庫:

  • libcmt.lib:發布版本的靜態CRT鏈接庫(/ MT)

  • libcmtd.lib:用于調試版本的靜態CRT鏈接庫(/ MTd)

  • msvcrt.lib:CRT版本DLL版本的導入庫(/ MD)

  • msvcrtd.lib:CRT調試DLL版本的導入庫(/ MDd)

查看鏈接器選項,Project + Properties,Linker,Command Line。請注意這里沒有提到這些庫。鏈接器自動確定編譯器使用了什么/ M開關,以及哪個.lib應通過#pragma comment指令鏈接。有點重要的是,如果/ M選項與您鏈接的.lib之間存在不匹配,則會出現可怕的鏈接錯誤并難以診斷運行時錯誤。

當鏈接器被告知鏈接到msvcrt.lib  libcmt.lib 時,您將看到引用的錯誤消息。如果將使用/ MT編譯的代碼與使用/ MD鏈接的代碼鏈接,將會發生這種情況。CRT只能有一個版本。

/ NODEFAULTLIB告訴鏈接器忽略從/ MT編譯代碼生成的#pragma comment指令。這可能有效,盡管其他一些鏈接器錯誤并不少見。像errno這樣的東西,它是靜態CRT版本中的extern int,但是對DLL版本中的函數進行宏編輯。許多其他人喜歡這樣。

好吧,正確的方法修復此問題,找到您使用錯誤的/ M選項編譯的鏈接的.obj或.lib文件。如果你沒有線索,那么你可以通過點擊.obj / .lib文件來找到它/“MT”

順便說一句:Windows可執行文件(如version.dll)有自己的CRT版本來完成他們的工作。它位于c:\ windows \ system32,您無法可靠地將它用于您自己的程序,其CRT標頭在任何地方都無法使用。程序使用的CRT DLL具有不同的名稱(如msvcrt90.dll)。


查看完整回答
反對 回復 2019-09-19
?
慕標琳琳

TA貢獻1830條經驗 獲得超9個贊

來自Yochai Timmer的 IMO 這個鏈接非常好,相關但很難閱讀。我寫了一個總結。

Yochai,如果您讀過這篇文章,請參閱最后的說明。


對于原始帖子讀?。?a >警告LNK4098:defaultlib“LIBCD”與使用其他庫沖突

錯誤

鏈接:警告LNK4098:defaultlib“LIBCD”與其他庫的使用沖突; 使用/ NODEFAULTLIB:庫

含義

系統的一部分被編譯為使用單線程標準(libc)庫與調試信息(libcd)靜態鏈接

而系統的另一部分被編譯為使用多線程標準庫而沒有調試信息,這些信息駐留在DLL中并使用動態鏈接

如何解決

  • 忽略警告,畢竟它只是一個警告。但是,您的程序現在包含多個相同功能的實例。

  • 使用鏈接器選項/ NODEFAULTLIB:lib。這不是一個完整的解決方案,即使你可以讓你的程序以這種方式鏈接你忽略了一個警告標志:代碼已經針對不同的環境進行了編譯,你的一些代碼可能被編譯為單線程模型,而其他代碼則是多線程。

  • [...]瀏覽所有庫并確保它們具有正確的鏈接設置

在后者中,正如原始帖子中提到的那樣,可能會出現兩個常見問題:

  • 您有第三方庫,其鏈接與您的應用程序不同。

  • 您的代碼中嵌入了其他指令:通常這是MFC。如果系統中的任何模塊與MFC鏈接,則所有模塊必須名義上鏈接到相同版本的MFC。

對于這些情況,請確保您了解問題并在解決方案中做出決定。


查看完整回答
反對 回復 2019-09-19
  • 3 回答
  • 0 關注
  • 1083 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號