链接错误LNK2005

正在链接...
libcpmtd.lib(xmutex.obj) : error LNK2005: "public: void __thiscall std::_Mutex::_Lock(void)" (?_Lock@_Mutex@std@@QAEXXZ) 已经在 test_smilgen.obj 中定义
libcpmtd.lib(xmutex.obj) : error LNK2005: "public: void __thiscall std::_Mutex::_Unlock(void)" (?_Unlock@_Mutex@std@@QAEXXZ) 已经在 test_smilgen.obj 中定义
LINK : warning LNK4098: 默认库“LIBCMTD”与其他库的使用冲突;使用 /NODEFAULTLIB:library
../../bin/win32/test_smilgen.exe : fatal error LNK1169: 找到一个或多个多重定义的符号

环境:vs2003

================================
是由于静态库调用了不同的标注C++库造成的,解决办法:在工程属性中,设置“运行时库”对应的Option
Standard C++ Library Characteristics Option Preprocessor directives
LIBCP.LIB Single-threaded, static link /ML  
LIBCPMT.LIB Multithreaded, static link /MT _MT
MSVCPRT.LIB Multithreaded, dynamic link (import library for MSVCP71.dll) /MD _MT, _DLL
LIBCPD.LIB Single-threaded, static link /MLd _DEBUG
LIBCPMTD.LIB Multithreaded, static link /MTd _DEBUG, _MT
MSVCPRTD.LIB Multithreaded, dynamic link (import library for MSVCP71D.DLL) /MDd _DEBUG, _MT, _DLL
原文地址:https://www.cnblogs.com/youyou/p/240266.html