在同乙個專案中,所有的原始檔必須鏈結相同的c執行時庫。如果某一檔案用了multithreaded dll版本,而其他檔案用了single-threaded或者multithreaded版本的庫,也就是說用了不同的庫,就會導致這個警告的出現。
總之,一句話,
lib之間有衝突。需要刪除匯入的一些
libs。
版 本類 型使用的library
被忽略的library
r release
單執行緒libc.lib
libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
多執行緒libcmt.lib
libc.lib, msvcrt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
使用dll的多執行緒
msvcrt.lib
libc.lib, libcmt.lib, libcd.lib, libcmtd.lib, msvcrtd.lib
d debug
單執行緒libcd.lib
libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
多執行緒libcmtd.lib
libc.lib, libcmt.lib, msvcrt.lib, libcmtd.lib, msvcrtd.lib
使用dll的多執行緒
msvcrtd.lib
libc.lib, libcmt.lib, msvcrt.lib, libcd.lib, libcmtd.lib
例如:1、編譯release版本的單執行緒的工程,在linker的命令列加入如下的引數: /nodefaultlib:libcmt.lib /nodefaultlib:msvcrt.lib /nodefaultlib:libcd.lib /nodefaultlib:libcmtd.lib /nodefaultlib:msvcrtd.lib
2、執行時庫選擇/mt的多執行緒專案出現如下錯誤:
1>libcmt.lib(crt0init.obj) : warning lnk4098: 預設庫「msvcrt.lib」與其他庫的使用衝突;請使用 /nodefaultlib:library
1> 正在生成**
1> 已完成**的生成
1>msvcrt.lib(ti_inst.obj) : error lnk2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@aae@abv0@@z) 已經在 libcmt.lib(typinfo.obj) 中定義
解決:忽略預設庫msvcrt.lib
配置屬性-->鏈結器-->輸入-->忽略特定庫:msvcrt.lib
或
配置屬性-->鏈結器->命令列:/nodefaultlib:msvcrt.lib
VC 動態鏈結庫
mfc 一 建立dll 1 建立mfc動態鏈結庫,在第4部選擇 regular dll with mfc shared linked 型別,即建立與mfc動態鏈結的常規dll,可以被win32應用程式和mfc應用程式使用。2 新增函式。在生成的工程的test.h檔案中新增語句如下 extern c ...
VC 動態鏈結庫 DLL 程式設計
vc 動態鏈結庫 dll 程式設計 一 理解庫 vc 動態鏈結庫 dll 程式設計 二 非mfc dll vc 動態鏈結庫 dll 程式設計 三 mfc規則dll vc 動態鏈結庫 dll 程式設計 四 mfc擴充套件 dll vc 動態鏈結庫 dll 程式設計 五 dll典型例項 動態鏈結庫 dl...
eXosip生成動態鏈結庫 VC
exosip生成動態鏈結庫 vc exosip 是純c 的sip協議棧實現,高效,簡潔,是眾多sip軟終端的核心庫之一 本段文字記錄了編譯exosip dll的過程 2 unzip,進入libexosip2 3.3.0 platform vsnet,開啟工程檔案 3 改變工程型別 配置屬性 常規 專...