Sie müssen sicherstellen, dass googletest und Ihr Projekt mit der gleichen Version der C-Laufzeitbibliothek (CRT) erstellt werden. Google Test (derzeit v1.6.0) bietet 2 Visual Studio-Lösungsdateien; gtest-1.6.0\msvc\gtest.sln
, die die statische Version und gtest-1.6.0\msvc\gtest-md.sln
verwendet, die die dynamische (dll) Version verwendet. Standardmäßig verwenden Projekte, die mit Visual Studio erstellt wurden, die DLL-Version.
Sie müssen entscheiden, ob Ihr Projekt die statische oder dynamische Version des CRT verwenden soll.
Um Ihr Projekt für die Verwendung der statischen Versionen festzulegen, gehen Sie zu Project->Properties
und wählen Sie oben links im Fenster Configuration: Debug
. Wählen Sie dann im selben Fenster Configuration Properties
->C/C++
->Code Generation
. Die Option für Runtime Library
sollte Multi-threaded Debug (/MTd)
sein.
Sie müssen dann sicherstellen, dass Sie mit den entsprechenden Versionen von gtest verknüpfen, wählen Sie also Configuration Properties
->Linker
->Input
. Bearbeiten Sie das Feld Additional Dependencies
, indem Sie den vollständigen Pfad zur Debug-Version der gtest-Bibliothek angeben (z. B. C:\gtest-1.6.0\msvc\gtest\Debug\gtestd.lib
).
das gleiche tun wieder für Release-Konfiguration, aber die Einstellung der Runtime Library
Option Multi-threaded (/MT)
und bietet den vollständigen Pfad zu der Release-Version der Gtest Bibliothek (z C:\gtest-1.6.0\msvc\gtest\Release\gtest.lib
).
Wenn Sie sich entscheiden, um die DLL-Versionen der CRT verwenden möchten, wählen Multi-threaded Debug DLL (/MDd)
und Multi-threaded DLL (/MD)
und Link zu den Gtest-md-Bibliotheken, die in gtest-1.6.0\msvc\gtest-md\...
sein wird, statt gtest-1.6.0\msvc\gtest\...
.
Haben Sie die Antworten gelesen, die Sie verlinkt haben, wie alles mit derselben Laufzeitbibliothekskonfiguration erstellt werden muss? Der Fehler, den Sie erhalten, klingt, als ob einige Teile mit der Nicht-Debug-Laufzeit und andere mit der Debug-Laufzeit erstellt wurden. –