___pInvalidArgHandler already defined in LIBCMTD.lib(invarg.obj)

vs2013编译项目时出错,网上很多的解决方案全都是垃圾,根本不能用

不过也有不是垃圾的,就是下面这个:

关于采用静态链接编译生成EXE库函数重复定义问题

看了好多关于类似LIBCMT.lib(invarg.obj) : warning LNK4006: ___pInvalidArgHandler already defined in libcmtd.lib(invarg.obj); second definition ignored的问题解决方法,但由于个人用的是VS2012所以原理虽然差不多,但操作步骤略有不同。

错误:

[cpp] view plain copy
 
  1. <pre name="code" class="plain">LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invalid_parameter@@YAXPBG00II@Z) already defined in libcmtd.lib(invarg.obj)  
  2. LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned int)" (?_invoke_watson@@YAXPBG00II@Z) already defined in libcmtd.lib(invarg.obj)  
  3. LIBCMT.lib(invarg.obj) : error LNK2005: __call_reportfault already defined in libcmtd.lib(invarg.obj)  
  4. LIBCMT.lib(invarg.obj) : error LNK2005: __get_invalid_parameter_handler already defined in libcmtd.lib(invarg.obj)  
  5. LIBCMT.lib(invarg.obj) : error LNK2005: __initp_misc_invarg already defined in libcmtd.lib(invarg.obj)  
  6. LIBCMT.lib(invarg.obj) : error LNK2005: __invalid_parameter already defined in libcmtd.lib(invarg.obj)  
  7. LIBCMT.lib(invarg.obj) : error LNK2005: __invoke_watson already defined in libcmtd.lib(invarg.obj)  
  8. LIBCMT.lib(invarg.obj) : error LNK2005: __set_invalid_parameter_handler already defined in libcmtd.lib(invarg.obj)  
  9. LIBCMT.lib(invarg.obj) : error LNK2005: ___pInvalidArgHandler already defined in libcmtd.lib(invarg.obj)  
  10. LINK : warning LNK4098: defaultlib 'LIBCMT' conflicts with use of other libs; use /NODEFAULTLIB:library  




解决方法:


/FORCE:MULTIPLE (有warning)

/verbose:lib /FORCE:MULTIPLE (no warning)

结果:


 

 
原文地址:https://www.cnblogs.com/wainiwann/p/7116328.html