У меня большой и сложный проект, который наконец проходит модульные тесты. Я построил googleTest 1.6.0 локально с Visual Studio 2010, файлы проекта, созданные с помощью cmake, как указано в README.
В этом проекте много зависимых библиотек, которые статически и динамически связаны. Многие из них проприетарные. Все попытки связать генерируют 220 таких ошибок. Вот выборка:
msvcprtd.lib (MSVCP100D.dll): ошибка LNK2005: «public: void __cdecl std :: _ Container_base12 :: _ Orphan_all (void)» (? _Orphan_all @ _Container_base12 @ std @@ QEAAXXZ) уже определен в gtest.lib -all.obj)
libcpmtd.lib (cerr.obj): ошибка LNK2005: "protected: char * __cdecl std :: basic_streambuf> :: _ Gndec (void)" (? _Gndec @? $ Basic_streambuf @ DU? $ Char_traits @ D @ std @ @@ std @@ IEAAPEADXZ) уже определен в msvcprtd.lib (MSVCP100D.dll)
LIBCMTD.lib (setlocal.obj): ошибка LNK2005: _configthreadlocale уже определен в MSVCRTD.lib (MSVCR100D.dll)
ССЫЛКА: предупреждение LNK4098: defaultlib 'MSVCRTD' конфликтует с использованием других библиотек; использовать / NODEFAULTLIB: библиотека
ССЫЛКА: предупреждение LNK4098: defaultlib 'LIBCMTD' конфликтует с использованием других библиотек; использовать / NODEFAULTLIB: библиотека
фатальная ошибка LNK1169: найден один или несколько кратно определенных символов
Я пробовал флаг / NODEFAULTLIB и пытался игнорировать только msvcprtd.lib, MSVCRTD.lib и LIBCMTD.lib, как и предлагалось, но затем я страдаю от неразрешенных символов ...
И проект, и googleTest скомпилированы с x64, / MP, / MDd и без /clr.
.
Я играл с флагами компилятора, задаваясь вопросом, есть ли какое-то несоответствие версий. Dumpbin, насколько я понимаю, не намекал на то, что я мог бы понять. Я надеялся на э