我有一个相当大的c/c++CGI项目,它引用了几个外部库(OpenSSL、FastCGI、Boost等)。我验证了每个库都是用/MT构建的,就像我们的主要可执行项目一样。然而,当包含某些标头(例如,FastCGI标头)时,我会收到数百个链接器错误,如以下所示:
错误226错误LNK1169:找到一个或多个多重定义符号
错误121错误LNK2005:"protected:__thiscall std::basic_ios>::basic_ios>(void)"(??0$basic_ios@DU$char_traits@D@std@@@std@@IAE@XZ)已在libfcgi.lib(libfcgi.dll)libcpmt.lib(cout.obj)中定义
错误208错误LNK2005:"protected:__thiscall std::basic_ios>::basic_ios>(void)"(??0$basic_ios@DU$char_traits@D@std@@@std@@IAE@XZ)已在libfcgi.lib(libfcgi.dll)*CIL库(CIL模块*)中定义
我再次查看了libfcgi,验证了/MT并重新编译,但没有成功。我不知所措。。。这些图书馆冲突是从哪里来的?解决此类链接器错误的好方法是什么?(Visual Studio 2012)
将FastCGI编译为静态库解决了这个问题。