2012-03-29 5 views
5

Ich habe google test installiert, wie es beschrieben wird here. Aber wenn ich versuche, Tests für mein aktuelles Projekt zu verwenden, bekomme ich 2 LNK4098 Warnungen:Ausführen von gtest mit Visual Studio 2010: LNK4098 und LNK2005

defaultlib 'MSVCRTD' Konflikte mit der Verwendung von anderen Bibliotheken; Verwenden Sie/NODEFAULTLIB: Bibliothek

und das gleiche für "LIBCMTD" und eine Reihe von LNK2005-Fehler. Aber wenn ich diese zwei Standardbibliotheken tatsächlich ignoriere, hilft es nicht: Ich bekomme noch mehr Fehler. Was ist das Problem?

+2

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

Antwort

6

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