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

阅读更多
我在Qt的Gui项目中,加入DCMTK编译后的MD/MDd运行时库,出现错误

1>------ Build started: Project: TestA, Configuration: Debug Win32 ------
1>Linking...
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: __thiscall type_info::type_info(class type_info const &)" (??0type_info@@AAE@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>msvcrtd.lib(ti_inst.obj) : error LNK2005: "private: class type_info & __thiscall type_info::operator=(class type_info const &)" (??4type_info@@AAEAAV0@ABV0@@Z) already defined in LIBCMTD.lib(typinfo.obj)
1>LIBCMTD.lib(crt0init.obj) : warning LNK4098: defaultlib 'msvcrtd.lib' conflicts with use of other libs; use /NODEFAULTLIB:library
1>D:\VSWorkSpace\TestA\Debug\TestA.exe : fatal error LNK1169: one or more multiply defined symbols found
     默认库“LIBCMTD”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

如何解决,网上是这样说的:

工程一大,包含的头文件和库也就多了,冲突一时是不可避免的。 不过还好, 只是Warning,并不影响整个工程的编译和运行。但是一些项目就要求尽量不出现Warning,因为你不知道将来项目的Bug会不会是由此而引起。严格,未雨绸缪,总是一件好事。谁也不想将来的某个时候去Debug N年前的玩意。 痛苦啊~~

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。
defaultlib

例如编译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://fsli.blog.hexun.com/4881338_d.html
  • defaultlib
  • 大小: 62.9 KB
  • 查看图片附件

你可能感兴趣的:(msvcrtd.lib,MDd,DCMTK,运行时库,conflicts)