У меня есть довольно большой 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)
Компиляция FastCGI как статической библиотеки устранила проблему.
Других решений пока нет …