con*_*ych 3 c++ linker-errors lnk2005 visual-c++
我找到了其他人遇到这个问题的例子,但他们的解决方案没有运气.我试图在一个也使用boost线程和绑定的静态库中使用std :: cout.当我不使用std::cout它并编译并与主程序良好链接,但当我这样做,我编译库我没有问题,但当我编译和链接使用静态库的主程序时,我得到了很多像:
2>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xi_z already defined in MSVCRTD.lib(cinitexe.obj) 2>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_a already defined in MSVCRTD.lib(cinitexe.obj) 2>LIBCMT.lib(crt0init.obj) : error LNK2005: ___xc_z already defined in MSVCRTD.lib(cinitexe.obj) 2>LIBCMT.lib(mlock.obj) : error LNK2005: __unlock already defined in MSVCRTD.lib(MSVCR100D.dll) 2>LIBCMT.lib(mlock.obj) : error LNK2005: __lock already defined in MSVCRTD.lib(MSVCR100D.dll) 2>LIBCMT.lib(winxfltr.obj) : error LNK2005: __XcptFilter already defined in MSVCRTD.lib(MSVCR100D.dll) 2>LIBCMT.lib(crt0.obj) : error LNK2005: _mainCRTStartup already defined in MSVCRTD.lib(crtexe.obj)
等等...
我已尝试进入我的链接器设置并停止使用错误输出中列出的冲突库,但我无法正确使用它.如果我告诉它停止使用一个库它可以解决问题,但给我一些遗漏的外部符号,然后我切换它有问题的库但我仍然得到一些"已经定义".有什么线索可以解决这个问题吗?我应该只创建另一个名为"log"或类别的类,只需从主.exe访问它(这将使用字符串库,这可能会再次引起问题,但我还没有尝试过)?感谢您的任何帮助.