忽略导入库 LIBCMTD.lib 1> 正在创建库 E:\vs\Code\xmlTestxml-5\x64\vc100debug_boost1.56\xmlTest.lib 和对象 E:\vs
2@YAPEAX_K@Z) 已经在 LIBCMTD.lib(new_scalar.obj) 中定义 1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __ 3@YAXPEAX@Z) 已经在 LIBCMTD.lib(delete_scalar.obj) 中定义 1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void _U@YAPEAX_K@Z) 已经在 LIBCMTD.lib(new_array.obj) 中定义 1>nafxcwd.lib(afxmem.obj) : error LNK2005: "void __ 2@YAPEAX_K@Z) 已在 LIBCMTD.lib(new_scalar.obj) 中定义;已忽略第二个定义 1>nafxcwd.lib(afxmem.obj) : warning LNK4006 _U@YAPEAX_K@Z) 已在 LIBCMTD.lib(new_array.obj) 中定义;已忽略第二个定义 1>nafxcwd.lib(afxmem.obj) : warning LNK4006
1_Lockit@std@@QEAA@XZ) 已经在 msvcprtd.lib(MSVCP100D.dll) 中定义 1>LIBCMTD.lib(sprintf.obj) : error LNK2005 ) 中定义 1>LIBCMTD.lib(_file.obj) : error LNK2005: _lock_file 已经在 msvcrtd.lib(MSVCR100D.dll) 中定义 1>LIBCMTD.lib LNK2005: _encoded_null 已经在 msvcrtd.lib(MSVCR100D.dll) 中定义 1>LIBCMTD.lib(crt0dat.obj) : error LNK2005 中定义 1>LIBCMTD.lib(fflush.obj) : error LNK2005: fflush 已经在 msvcrtd.lib(MSVCR100D.dll) 中定义 1>LIBCMTD.lib 中定义 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_z 已经在 msvcrtd.lib(cinitexe.obj) 中定义 1>LIBCMTD.lib
libboost_thread-vc100-mt-gd-1_55.lib libboost_system-vc100-mt-gd-1_55.lib libgmp-10.lib libmpfr-4.lib LIBCMTd.lib lib libboost_thread-vc100-mt-1_55.lib libboost_system-vc100-mt-1_55.lib libgmp-10.lib libmpfr-4.lib LIBCMTd.lib libcpmt.lib LIBCMTd.lib LIBCD.lib LIBC.lib LIBCMT.lib libCGAL_Core-vc100-mt-4.4-I-900.lib libCGAL-vc100 lib libboost_thread-vc100-mt-1_55.lib libboost_system-vc100-mt-1_55.lib libgmp-10.lib libmpfr-4.lib LIBCMTd.lib libcpmt.lib msvcrt.lib libcpmt.lib msvcrt.lib LIBCMTd.lib LIBCD.lib LIBC.lib LIBCMT.lib
但是在编译链接项目时,VS爆出如下错误: 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_a 已经在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMTD.lib(crt0init.obj) : error LNK2005: __xi_z 已经在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMTD.lib (crt0init.obj) : error LNK2005: __xc_a 已经在 MSVCRT.lib(cinitexe.obj) 中定义 1>LIBCMTD.lib(crt0init.obj) :
libboost_thread-vc100-mt-gd-1_56.lib libboost_system-vc100-mt-gd-1_56.lib libgmp-10.lib libmpfr-4.lib 这个是因为忽略了库文件 LIBCMTd.lib msvcrt.lib _HUGE定义在LIBCMTd.lib这个lib里,这该怎么解决 我查阅了网上已经有的文章,建议大概有2类。 一类是在项目配置中直接忽略libcmtd.lib这个库。另一类是根据工程的类型(单线程、多线程、debug、release)去调换链接库的顺序。 这两种方法是很糟糕的。 这样能解决LIBCMTD.lib的链接冲突问题。 忽略库 LIBCMTd.lib;%(IgnoreSpecificDefaultLibraries) 生成成功,但是加载提示 assertion failed怎么解决 Debug Assertion Failed
但是出现了一堆 error LNK2005的问题,大概是说: 原来会发生这些奇怪的错误状况,是因为程序同时链接了 LIBCMTD.lib与MSVCRTD.lib而造成函数定义版本冲突。 关键词:程序库、CRT、LIBCMTD.lib、MSVCRTD.lib、链接库的冲突问题、MSVC链接处理 阅读前需要对静态库(.lib)、动态库(.dll)、导入库(这个还是.lib)之间的区别联系有了解
库编译后的文件名: 文件名 含义 编译使用该库的程序时应使用的编译选项 libboost_regex-vc90-mt-sgd-1_38.lib 静态库,多线程,调试版本 使用静态调试版本C运行时库(LIBCMTD.LIB 而使用的是libboost_regex-vc90-mt-sgd-1_38.lib,它对应的defaultlib就是LIBCMTD.LIB和LIBCPMTD.LIB。
Set Ignore All Default Libraries: "No" Set Ignore Specific Default Libraries: "libcmtd.lib" 3. Set Ignore All Default Libraries: "No" Set Ignore Specific Default Libraries: "LIBC.lib;LIBCMTD.lib"
此选项还使编译器将库名 LIBCMTD.lib 放入 .obj 文件中,以便链接器使用 LIBCMTD.lib 解析外部符号。
legacy_stdio_definitions.lib 记得用分号(“;”) 隔开注意是英文分号 3.3.2 修改 忽略所有默认库 项的值为否 3.3.3 在 忽略特定默认库 项中添加 LIBC.lib;LIBCMTD.lib
忽略所有默认库部分选择:否,忽略特定默认库选择填写: LIBC.lib;LIBCMTD.lib,设置完毕后记得点击确定。
libboost_system-vc80-mt-1_55.lib libboost_thread-vc80-mt-1_55.lib libboost_date_time-vc80-mt-1_55.lib libcmtd.lib
对应的调试版名称为libcmtd.lib。
导入刚才编译成功的osipparser2.lib osip2.lib和 /NODEFAULTLIB: LIBCD.lib, /NODEFAULTLIB: LIBCMTD.lib。
libboost_thread-vc80-mt-1_55.lib libboost_date_time-vc80-mt-1_55.lib 忽略项 <IgnoreSpecificDefaultLibraries>libcpmtd.lib;libcmtd.lib
MSVCRT.LIB 链接 /MDd 与 MSVCRTD.LIB 调试库链接 /ML 与 LIBC.LIB 链接 /MLd 与 LIBCD.LIB 调试库链接 /MT 与 LIBCMT.LIB 链接 /MTd 与 LIBCMTD.LIB
而/MTd, /MDd, /MLd选项使用对应调试版的C运行时库(libcmtd.lib, msvcrtd.dll, libcd.lib),编译器自动再多定义一个_DEBUG宏。
对于MT/MTd,由于连接运行时库是LIBCMT.lib/LIBCMTD.lib,这两个库是静态库,所以此种方式编译的程序,移到另一台机器上面也可以正常运行,所以这种方式,不会产生缺少动态库的报错。
Powrprof.lib Propsys.lib shlwapi.lib Setupapi.lib pe_image.lib boringssl.lib dynamic_annotations.lib 忽略:LIBCMTD.lib