visual studio microsoft manager descargar cli c++ visual-studio linker nuget googletest

microsoft - ¿Cómo compilar y vincular pruebas de google en el proyecto C++ en Visual Studio 2013 pero con Gtest instalado por NuGet Package Manager?



nuget package manager visual studio 2017 (2)

El paquete Google Test NuGet contiene una biblioteca precompilada solo para enlaces estáticos, pero un inicializador predeterminado para las opciones de vinculación del paquete es "dinámico".

Project properties -> Configuration properties -> Referenced packages -> gtest -> Linkage: set to "Static"

Y no agregue gtest.lib manualmente.

Tengo Microsoft Visual Studio 2013 Community Edition en Windows 7. Quiero instalar gtest y gmock para C ++ en una forma más nueva que descargar encabezados y binarios o compilar por mi cuenta.

Encontré Herramientas> Administrador de paquetes Nuget> Administrar paquetes Nugets para la Solución I elegida en línea, luego escribí gtest. De los resultados de búsqueda, encontré Google Test, así que lo he instalado para mi proyecto actual. Después de la instalación, el siguiente código compila:

#include <iostream> #include <gtest/gtest.h> using namespace std; using namespace ::testing; int factorian(int n) { if (n == 0 || n == 1) return 1; else return n*factorian(n - 1); } TEST(factorianTest, simpleTest) { ASSERT_EQ(1, factorian(0)); ASSERT_EQ(1, factorian(1)); ASSERT_EQ(2, factorian(2)); } int main(int argc, char* argv[]) { InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); }

pero no enlaza:

Error 1 error LNK2019: símbolo externo no resuelto "bool __cdecl testing :: internal :: IsTrue (bool)" (? IsTrue @ internal @ testing @@ YA_N_N @ Z) al que se hace referencia en la función "public: void __thiscall testing :: internal :: scoped_ptr , clase std :: allocator>> :: reset (clase std :: basic_string, clase std :: allocator> *) "(? reset @? $ scoped_ptr @ V? $ basic_string @ DU? $ char_traits @ D @ std @@ V? $ Allocator @ D @ 2 @@ std @@@ interno @ testing @@ QAEXPAV? $ Basic_string @ DU? $ Char_traits @ D @ std @@ V? $ Allocator @ D @ 2 @@ std @@@ Z) c: / Users / Grzegorz / documents / visual studio 2013 / Proyectos / tmp / tmp / Source.obj tmp

Entonces abrí: Project Properties> Configuration Properties> Linker> Input y agregué: gtest.lib pero desafortunadamente veo:

Error 1 de error LNK1104: no se puede abrir el archivo ''gtest.lib'' c: / Users / Grzegorz / documents / visual studio 2013 / Projects / tmp / tmp / LINK tmp

cuando agrego la ruta completa al archivo (sé que no debería), hay errores extraños:

Error 2 error LNK2005: "public: __thiscall std :: _ Container_base12 :: _ Container_base12 (void)" (?? 0_Container_base12 @ std @@ QAE @ XZ) ya se ha definido en gtestd.lib (gtest-all.obj) c: / Users / Grzegorz / documents / visual studio

2013 / Proyectos / tmp / tmp / msvcprtd.lib (MSVCP120D.dll) tmp

entonces mi pregunta es cómo compilar y vincular pruebas de google en el proyecto C ++ en Visual Studio 2013 pero con Gtest instalado por NuGet Package Manager?


Encontré una solución: cuando escribí gtest en nugets package manager para encontrar el paquete, encontré varios paquetes:

  1. Prueba de Google
  2. Símbolos de dependencia de FIX8 GTest
  3. Dependencia FIX8 GTest

así que también he instalado la dependencia FIX8 GTest . Y el error de enlace desapareció.