链接警告 LNK4098

79 篇文章 0 订阅

defaultlib "library" conflicts with use of other libs; use /NODEFAULTLIB:library

你试图链接相互不兼容的库。

重要提示   目前运行时库包含预编译指令来阻止混合不同类型库的链接。如果你试图在同一个程序中使用不同类型的或者调试/非调试版本的运行时库,你将看到这个警告。举个例子,如果你编译一个文件使用某个类型的运行时库,而别的文件使用另外一个类型(例,单线程版本和多线程版本),那么在你试图链接它们的时候,你将看到这个警告。你应该使用相同的运行时库来编译所有的源文件。参阅MSDN中的Use Run-Time Library 章节了解关于(MD, /ML, /MT, /LD)编译开关的更多信息。

你可以使用链接开关/VERBOSE:LIB来了解链接器在搜索哪个库。如果你试图创建一个使用单线程非调试版本运行库的执行文件时收到LNK4098警告,那么使用/VERBOSE:LIB参数来找出链接器在搜索哪个库。链接器应该列出搜索的库LIBC.LIB,而不是LIBCMT.LIB, MSVCRT.LIB, LIBCD.LIB, LIBCMTD.LIB, 或者MSVCRTD.LIB等库。你可以通过在VC开发环境项目 Project 设置 Settings 链接Link 页面中的Ignore Libraries编辑框中输入不正确的运行时库名告诉链接器忽略这些运行时库,或者可以使用/NODEFAULTLIB:library 的链接开关来忽略那些不正确的库。参阅MSDN中 Ignore Libraries 章节了解(/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

 

 

出现如下告警时

Linking...
msvcrtd.lib(cinitexe.obj) : warning LNK4098: defaultlib "msvcrt.lib" conflicts with use of other libs; use /NODEFAULTLIB:library

 

打开工程属性对话框,
在link选项卡- Category :input - Ignore libraries:

Release模式输入:msvcrt.lib
debug模式输入:msvcrtd.lib

 

 

本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/vocanicy/archive/2008/05/15/2449691.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值