Какой хороший способ разрешить конфликты библиотеки времени выполнения?
У меня есть довольно большой C / C++ CGI-проект, который ссылается на несколько внешних библиотек (OpenSSL, FastCGI, Boost и т. Д.). Я проверил, что каждая библиотека создается с /MT, как наш основной исполняемый проект. Однако при включении определенных заголовков (например, заголовка FastCGI) я получаю сотни ошибок компоновщика, подобных этим:
Ошибка 226 Ошибка LNK1169: найден один или несколько кратно определенных символов
Ошибка 121 ошибка LNK2005: "защищено: __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: "защищено: __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)
1 ответ
Компиляция FastCGI как статической библиотеки устранила проблему.