default lib conflicts with use of other libs

本文介绍了解决Visual Studio编译时出现的LNK4098警告的方法,该警告通常由于链接了不兼容的运行时库而引发。文章提供了不同版本和类型的应用程序所需的正确库组合,并指导如何通过配置排除不必要的库。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

LINK : warning LNK4098: defaultlib "LIBCMTD" conflicts with use of other libs; use /NODEFAULTLIB:library
 
MSDN上的解释为:
You are trying to link with incompatible libraries. 
Important   The run-time libraries now contain directives to prevent mixing different types. You’ll receive this warning if you try to use different types or debug and non-debug versions of the run-time library in the same program. For example, if you compiled one file to use one kind of run-time library and another file to use another kind (for example, single-threaded versus 
 multithreaded)  and tried to link them, you’ll get this warning.  You should compile all source files to use the same run-time library
总之,lib之间有冲突。需要删除导入的一些libs

 

版 本 
 
 
 
 
 
 

类 型 
 
 
 
 
 
 

使用的library 
 
 
 
 
 
 

被忽略的library 
 
 
 
 
 
 

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 
 
 
 
 
 
 

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 
 
 
 
 
 
 


 例如编译Release版本的单线程的工程,在linker的命令行加入如下的参数:  NODEFAULTLIB:libcmt.lib /NODEFAULTLIB:msvcrt.lib /NODEFAULTLIB:libcd.lib /NODEFAULTLIB:libcmtd.lib /NODEFAULTLIB:msvcrtd.lib
当然,通过VC6.0的开发环境也可以配置。选择Project -> Setting,出现Project Setting对话框,单击Link标签,在Category下拉菜单中选择Input,在下方的Ignore libraries: 输入框中输入“被忽略的library”框中对应的libs。输入时注意当前Build是什么版本,libs之间用“,”隔开。“Ingore all default libraries”不能勾选。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值