解决运行时库冲突的好方法是什么?

What's a good way to resolve Runtime library conflicts?

本文关键字:方法 是什么 运行时 冲突 解决      更新时间:2023-10-16

我有一个相当大的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编译为静态库解决了这个问题。