如何检查Windows中的静态库(.lib)链接到哪个运行时库?
我正在使用/ MDd编译我的项目,我假设我正在链接的库正在使用/ MTd多线程调试
Error 7 error LNK2005: "public: __thiscall std::_Lockit::~_Lockit(void)" (??1_Lockit@std@@QAE@XZ) already defined in libcpmtd.lib(xlock.obj) C:\...\msvcprtd.lib(MSVCP100D.dll)
LIBCPMTD.LIB =多线程,静态链接
我知道有一个选项/NODEFAULTLIB:"libcpmtd.lib"
我已尝试并成功,但我宁愿避免这种情况。
答案 0 :(得分:7)
我能够通过以下方式解决这个问题
> dumpbin /DIRECTIVES C:\..\ThirdParty\tidy\windows\lib\libtidy
.lib
Microsoft (R) COFF/PE Dumper Version 10.00.40219.01
Copyright (C) Microsoft Corporation. All rights reserved.
Dump of file C:\..\ThirdParty\tidy\windows\lib\libtidy.lib
File Type: LIBRARY
Linker Directives
-----------------
/DEFAULTLIB:"LIBCMT"
/DEFAULTLIB:"OLDNAMES"
...
这是与MT的联系。我使用/ MDd重新编译了lib,它链接得很好。
答案 1 :(得分:0)
自crt的MSVPRTD.LIB is the importlib of the dynamic link library开始,当您明确要求链接到静态链接 时,您的构建链似乎有些错误。
您可能需要直观地检查项目文件是否存在矛盾。