warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library

时间:2022-05-28 07:01:11

最近在编译库文件后,使用它做APP,遇到如下问题:

1>LIBCMT.lib(invarg.obj) : error LNK2005: __pInvalidArgHandler 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: _initp_misc_invarg 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: _call_reportfault 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: _set_invalid_parameter_handler 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: _get_invalid_parameter_handler 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: _invoke_watson 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invoke_watson(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned __int64)" (?_invoke_watson@@YAXPEBG00I_K@Z) 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: _invalid_parameter 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LIBCMT.lib(invarg.obj) : error LNK2005: "void __cdecl _invalid_parameter(unsigned short const *,unsigned short const *,unsigned short const *,unsigned int,unsigned __int64)" (?_invalid_parameter@@YAXPEBG00I_K@Z) 已经在 LIBCMTD.lib(invarg.obj) 中定义
1>LINK : warning LNK4098: 默认库“LIBCMT”与其他库的使用冲突;请使用 /NODEFAULTLIB:library
1>D:\CPS_Project\CPS\src\fis\sclServer\x64\Release\sclServer.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

解决方法:

工程右键 “属性”->“配置属性”-> “C/C++”-> “代码生成” ->  “ 运行库” 选项 设置成“多线程 (/MT)”即可