bluesky_lcj

导航

Warning link 4098 defaultlib "library" conflicts with use of other library 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”不能勾选。

转自:http://www.jianblog.com/2007/04/24/378/

posted on 2009-08-07 11:49  bluesky_lcj  阅读(531)  评论(0编辑  收藏  举报