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\...
.
¿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. –