執行時庫現在包含可防止混合不同型別的指令。如果試圖在同乙個程式中使用不同型別的執行時庫或使用除錯和非除錯版本的執行時庫,則將收到此警告。例如,如果編譯乙個檔案以使用一種執行時庫,而編譯另乙個檔案以使用另一種執行時庫(例如單執行緒執行時庫對多執行緒執行時庫),並試圖鏈結它們,則將得到此警告。應將所有原始檔編譯為使用同乙個執行時庫。有關更多資訊,請參見使用執行時庫(/md、/mt 和 /ld)編譯器選項。
可以使用鏈結器的 /verbose:lib 開關來確定鏈結器搜尋的庫。如果收到 lnk4098,並想建立使用如單執行緒、非除錯執行時庫的可執行檔案,請使用 /verbose:lib 選項確定鏈結器搜尋的庫。鏈結器作為搜尋的庫輸出的應是 libc.lib,而非 libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib 和 msvcrtd.lib。對每個要忽略的庫可以使用 /nodefaultlib,以通知鏈結器忽略錯誤的執行時庫。
下表顯示根據要使用的執行時庫應忽略的庫。
若要使用此執行時庫 請忽略這些庫
單執行緒 (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
除錯單執行緒 (libcd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcmtd.lib、msvcrtd.lib
除錯多執行緒 (libcmtd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、msvcrtd.lib
使用 dll 的除錯多執行緒 (msvcrtd.lib)
libc.lib、libcmt.lib、msvcrt.lib、libcd.lib、libcmtd.lib
(新增忽略庫的時候記著用分號隔開)
例如,如果收到此警告,並希望建立使用非除錯、單執行緒版本的執行時庫的可執行檔案,可以將下列選項與鏈結器一起使用:
/nodefaultlib:libcmt.lib /nodefaultlib:msvcrt.lib /nodefaultlib:libcd.lib /nodefaultlib:libcmtd.lib /nodefaultlib:msvcrtd.lib
LNK2005 連線錯誤解決辦法
nafxcwd.lib afxmem.obj error lnk2005 void cdecl operator new unsigned int 2 yapaxi z 已經在 libcmtd.lib new.obj 中定義 nafxcwd.lib afxmem.obj error lnk2005 ...
LNK2005 連線錯誤解決辦法
nafxcwd.lib afxmem.obj error lnk2005 void cdecl operator new unsigned int 2 yapaxi z 已經在 libcmtd.lib new.obj 中定義 nafxcwd.lib afxmem.obj error lnk2005 ...
LNK2005 連線錯誤解決辦法
nafxcwd.lib afxmem.obj error lnk2005 void cdecl operator new unsigned int 2 yapaxi z 已經在 libcmtd.lib new.obj 中定義 nafxcwd.lib afxmem.obj error lnk2005 ...