注:本人的这个问题并没有解决,不过应该可以解决一些问题。
LINK : warning LNK4098: defaultlib "LIBC" conflicts with use of other libs; use /NODEFAULTLIB:library
有此问题解决办法的请赐教,以下为转帖内容-------
lib之间有冲突。需要删除导入的一些libs。
工程一大,包含的头文件和库也就多了,冲突一时是不可避免的。 不过还好, 只是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 touse 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-timelibrary.
总之,一句话,
版 本 |
类 型 |
使用的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 |