2012-03-29 9 views
5

He instalado la prueba de google como se describe here. Pero cuando trato de usar pruebas para mi proyecto actual, recibo 2 advertencias LNK4098:Ejecutando gtest usando Visual Studio 2010: LNK4098 y LNK2005

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

y lo mismo para 'LIBCMTD', y un montón de errores de LNK2005. Pero cuando realmente ignoro estas dos bibliotecas predeterminadas, no ayuda: recibo incluso más errores. ¿Cuál es el problema?

+2

¿Has leído en las respuestas que vinculaste a cómo debe construirse todo utilizando la misma configuración de la biblioteca en tiempo de ejecución? El error que está recibiendo suena como que algunas partes están compiladas usando el tiempo de ejecución sin depuración y otras compiladas usando el tiempo de ejecución de depuración. –

Respuesta

6

Debe asegurarse de que googletest y su proyecto estén compilados usando la misma versión de C Runtime Library (CRT). La prueba de Google (actualmente v1.6.0) proporciona 2 archivos de solución de Visual Studio; gtest-1.6.0\msvc\gtest.sln que usa la versión estática y gtest-1.6.0\msvc\gtest-md.sln que usa la versión dinámica (dll). Por defecto, los proyectos creados a través de Visual Studio usan la versión dll.

Debe decidir si desea que su proyecto utilice las versiones estáticas o dinámicas del CRT. Para configurar su proyecto para usar las versiones estáticas, vaya a Project->Properties y en la esquina superior izquierda de la ventana, seleccione Configuración: Debug. Luego, en esta misma ventana, seleccione Configuration Properties ->C/C++ ->Code Generation. La opción para Runtime Library debe ser Multi-threaded Debug (/MTd).

Luego debe asegurarse de estar enlazando a las versiones apropiadas de gtest, por lo tanto, seleccione Configuration Properties ->Linker ->Input. Edite el campo Additional Dependencies proporcionando la ruta completa a la versión de depuración de la biblioteca gtest (por ejemplo, C:\gtest-1.6.0\msvc\gtest\Debug\gtestd.lib).

hacer lo mismo para la configuración de lanzamiento, pero estableciendo la opción Runtime Library a Multi-threaded (/MT) y proporcionar la ruta completa a la versión de la biblioteca GTEST (por ejemplo C:\gtest-1.6.0\msvc\gtest\Release\gtest.lib).

Si decide que desea utilizar las versiones de DLL del CRT, elija Multi-threaded Debug DLL (/MDd) y Multi-threaded DLL (/MD), y el enlace a las bibliotecas GTEST-MD que estarán en gtest-1.6.0\msvc\gtest-md\... en lugar de gtest-1.6.0\msvc\gtest\....