2011-09-19 16 views
7

Tengo un proyecto grande y complicado que finalmente obtiene pruebas unitarias. He construido googleTest 1.6.0 localmente con Visual Studio 2010, los archivos de proyecto creados con cmake como lo especifica el README.Vinculación de googleTest en VS2010 resultados en LNK2005 debido a otras bibliotecas dependientes

Este proyecto tiene muchas bibliotecas dependientes que están vinculadas estática y dinámicamente. Muchos de ellos son propietarios. Todos los intentos de enlace generan 220 errores de este tipo. He aquí una muestra:

MSVCPRTD.lib (MSVCP100D.dll): error LNK2005: "public void std :: __cdecl _ :: _ Container_base12 Orphan_all (void)"? (_Orphan_all @ @ _Container_base12 std @@ QEAAXXZ) ya definido en gtest.lib (gtest-all.obj)

libcpmtd.lib (cerr.obj): error LNK2005: "protected: char * __cdecl std :: basic_streambuf> :: _ Gndec (void) "(? _Gndec @? $ Basic_streambuf @ DU? $ Char_traits @ D @ std @@@ std @@ IEAAPEADXZ) ya se ha definido en msvcprtd.lib (MSVCP100D.dll)

LIBCMTD.lib (setlo) cal.obj): error LNK2005: _configthreadlocale ya definido en MSVCRTD.lib (MSVCR100D.dll)

LINK: advertencia LNK4098: defaultlib 'MSVCRTD' entra en conflicto con el uso de otras librerías; use/NODEFAULTLIB: library LINK: advertencia LNK4098: defaultlib 'LIBCMTD' entra en conflicto con el uso de otras librerías; uso/NODEFAULTLIB: Biblioteca

LNK1169 error grave: uno o más multiplican símbolos definidos encontraron

que he probado la bandera/NODEFAULTLIB, y he tratado de ignorar simplemente MSVCPRTD.lib , MSVCRTD.lib y LIBCMTD.lib, como se sugiere, pero luego sufro de símbolos no resueltos ...

Tanto el proyecto como googleTest se compilan con x64,/MP,/MDd y no/clr.

He estado jugando con los indicadores del compilador, preguntándome si hay algún tipo de desajuste de versión. Dumpbin, en la medida en que lo entiendo, no ha insinuado nada que pueda entender. Esperaba una er

Respuesta

10

Parece que su pregunta está respondida en Google Talk FAQ. Asegúrese de que todas sus bibliotecas usen la configuración/MD (d).

+1

Resulta que estás en lo cierto. Había olvidado que había publicado esta pregunta antes de encontrar la respuesta a través de mi propio juicio. –

+0

Aunque tiene varios años, ¿podría arreglar el (ahora) enlace de preguntas frecuentes incorrecto a: https://github.com/google/googletest/blob/master/googletest/docs/FAQ.md#i-am-building-my -project-with-google-test-in-visual-studio-and-all-im-getting-is-a-bunch-of-linker-errors-or-warnings-help – PiJ

Cuestiones relacionadas