Non è documentato sul sito web e la gente sembra avere problemi a configurare il framework. Qualcuno può mostrare la presentazione passo passo a una configurazione di esempio del progetto.Come configurare Google C++ Testing Framework (gtest) su Visual Studio 2005
risposta
Ciò che Arlaharen ha detto era fondamentalmente corretto, tranne che ha omesso la parte che spiega gli errori del linker. Prima di tutto, è necessario creare l'applicazione senza il CRT come libreria di runtime. Dovresti sempre farlo comunque, in quanto semplifica davvero la distribuzione della tua applicazione. Se non lo fai, allora tutti i tuoi utenti hanno bisogno della libreria di runtime di Visual C++ installata, e quelli che non si lamenteranno delle misteriose DLL mancanti sul loro sistema ... per le poche centinaia di kilobyte che costa collegare in il CRT staticamente, ti risparmi un sacco di mal di testa più tardi in supporto (credimi su questo - l'ho imparato nel modo più duro!).
In ogni caso, per fare questo, si passa alle proprietà della destinazione -> C/C++ -> Generazione codice -> Libreria di runtime, e deve essere impostato come "Multi-Threaded" per la versione di Release e "Multi- Debug filettato "per la build di Debug.
Dal momento che la libreria GTEST è costruito nello stesso modo, è necessario assicurarsi che si sta collegando contro la versione corretta di esso, altrimenti il linker tirerà in un'altra copia della libreria di runtime, che è l'errore hai visto (btw, questo non dovrebbe fare la differenza se stai usando MFC o no). È necessario creare gtest come in modalità debug e Release e conservare entrambe le copie. Quindi si collega a gtest.lib/gtest_main.lib nella versione di rilascio e gtestd.lib/gtest_maind.lib nel build di debug.
Inoltre, è necessario assicurarsi che l'applicazione punti alla directory in cui sono memorizzati i file di intestazione gtest (in proprietà -> C/C++ -> Generale -> Directory di inclusione aggiuntive), ma se si è arrivati al linker errore, presumo che tu sia già riuscito a ottenere questa parte corretta, altrimenti avresti avuto molti più errori del compilatore da affrontare prima.
Ho imparato questa "strada difficile", passando tutta la mia giornata. Finalmente l'ho fatto funzionare, dopo averli costruiti entrambi nello stesso modo. Grazie per la risposta, ma è tardi. :/ E BTW, il tuo suggerimento CRT è sbagliato, ma non ho abbastanza spazio per discuterne. Vedi http://tinyurl.com/dj5k7k – knaser
beh se lo hai imparato nel modo "difficile" potresti essere dimenticato che le DLL di runtime CRT sono chiamate "ridistribuibili" ... quindi è chiaro che devi ridistribuirle tu stesso .. o includendo l'installatore di redist nel proprio programma di installazione, o semplicemente estraendo le DLL necessarie nella propria cartella di installazione ... (incluso un file manifest se necessario) – smerlin
Collegamento statico del CRT significa che l'applicazione non acquisirà exploit/correzioni di sicurezza – paulm
aver costruito GTEST, questo è quello che ho fatto:
- Add \ mypath \ GTEST-1.0.1 \ Debug (o di uscita) al Common Properties-> Linker-> Generale-> Ulteriori directory di libreria
- Aggiungi gtest.lib e gtest_main.lib al Common Properties-> Linker-> INPUT-> dipendenze aggiuntive
Dopo di che ho appena scrivere il mio test con il test o TEST_F a seconda dei casi e compilarli insieme con il mio principale funzione:
int main(int argc, char** argv)
{
testing::InitGoogleTest(&argc, argv);
return RUN_ALL_TESTS();
}
Ottengo molti errori linker: già definito in gtest.lib ... eg .: 1> LIBCMT.lib (tidtable.obj): errore LNK2005: __encode_pointer già definito in msvcrt.lib (MSVCR80 .dll) Oh, btw, sto provando a scrivere test per un codice MFC. – knaser
Siamo spiacenti. Non penso di poterti aiutare lì. Per qualche ragione non ho questi errori di collegamento. Hai provato a costruire un semplice test del mondo con gtest? – Arlaharen
'gtest_main.lib' contiene la funzione' main' di default, quindi probabilmente non vuoi includerla se hai scritto il tuo 'main' esplicitamente. – Groo
In Microsoft Visual Studio, il tipo di libreria di runtime non correttamente configurato causa errori di collegamento.
VS 2005 (e 2008) utilizza DLL con multithreading o DLL di debug multithreading come impostazione predefinita. Ma la libreria di Google Test utilizza il runtime di debug con Mulithreaded o Mulithreaded come predefinito.
Quindi, scegliere il tipo di libreria di runtime appropriato per la libreria di test google. (in Proprietà di configurazione -> Generazione codice -> Libreria runtime).
cos'è il runtime appropriato? (MD o altro) –
Ho fatto un video tutorial sulla configurazione: http://www.youtube.com/watch?v=mzSzwQOmMRs
(Queste istruzioni ottenere il framework di test che lavora per la configurazione di debug.Dovrebbe essere abbastanza banale per applicare la stessa procedura per la configurazione di rilascio.)
Get Google C++ Testing Framework
- scaricare l'ultima gtest framework
- Unzip per
C:\gtest
Costruisci le librerie Framework
- Aprire
C:\gtest\msvc\gtest.sln
in Visual Studio - set di configurazione a "Debug"
- Genera soluzione
creare e configurare il progetto di test
- creare una nuova soluzione e scegliere la modello Visual C++> Win32> Applicazione console Win32
- Fare clic con il tasto destro del mouse sul progetto appena creato e selezionare Proprietà
- Modificare la configurazione in debug.
- Proprietà di configurazione> C/C++> Generale> Directory di inclusione aggiuntive: Aggiungi
C:\gtest\include
- Proprietà di configurazione> C/C++> Generazione codice> Runtime Library: Se i link codice per una DLL runtime, scegliere Multi-threaded Debug DLL (/ MDD). In caso contrario, scegliere Debug multi-thread (/ MTd).
- Proprietà di configurazione> Linker> Generale> Ulteriori directory di libreria: Aggiungi
C:\gtest\msvc\gtest\Debug
oC:\gtest\msvc\gtest-md\Debug
, a seconda della posizione di gtestd.lib - proprietà di configurazione> Linker> Input> Dipendenze aggiuntive: Aggiungi
gtestd.lib
Verifica Tutto funziona
- Aprire il cpp nel progetto di test che contiene la funzione
main()
. incollare il seguente codice:
#include "stdafx.h" #include <iostream> #include "gtest/gtest.h" TEST(sample_test_case, sample_test) { EXPECT_EQ(1, 1); } int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); RUN_ALL_TESTS(); std::getchar(); // keep console window open until Return keystroke }
Test> avviare il debug
Se tutto ha funzionato, si dovrebbe vedere apparire la finestra della console e vi mostrerà i risultati del test unità.
questa è stata un'ottima guida! Sono stato in grado di far girare la palla, ma vorrei aggiungere ancora una nota: il progetto di test e la libreria gtest devono essere costruiti con la stessa opzione Code Generation, o entrambi sono/MDd o entrambi sono/MTd, altrimenti ci sarà essere un mucchio di errori di collegamento. – Kiril
** Nota: ** Chiunque stia tentando di eseguire questa implementazione simile con Microsoft Visual Studio .Net 2003, le librerie di Google Test Framework impostano automaticamente la libreria di runtime su "_Single-threaded Debug_" per la modalità di debug e "_Single-threaded_" per la modalità di rilascio e per quanto ho provato, l'opzione per cambiarla dalla generazione del codice non è disponibile. Quindi, assicurati di scegliere l'opzione Single-threaded come libreria di runtime nel tuo progetto. Oltre a questo, questo tutorial semplice e breve funziona perfettamente! – Neophile
Funziona anche alla grande in VS2008. – louisgab
Se non si desidera scrivere il proprio main() per i test, è possibile utilizzare la funzione main() definita in gtest_main.lib, ma in tal caso si ottengono errori del linker "Punto di ingresso deve essere definito" in VS2012. Nel progetto di test impostare ProjectProperties-> Linker-> System-> SubSystem su "Console" poiché questo forzerà VS2012 a cercare un punto di ingresso chiamato "main()" e lo troverà in gtest_main.lib (a condizione che tu abbia collegato correttamente).
Molti errori, ci sono voluti un po 'per risolvere.
Qui sono semplici passi:
# Scarica Googletest file ZIP da: https://github.com/google/googletest
# Googletest Visual Studio soluzione
Open C:\googletest\googletest\msvc\2010\gtest.sln
Change "Solution configuration"
from "Debug" to "Release"
Build Solution
creates gtest.lib
# Il vostro progetto:
Project Properties > Configuration Properties > VC++ Directories > Include Directories
append the following: ;C:\googletest\googletest\include
Project Properties > Configuration Properties > Linker > General > Additional Library Directories >
append the following: ;C:\googletest\googletest\msvc\2010\gtest\Win32-Release
Project Properties > Configuration Properties > C/C++ > Runtime Library
Remove the value of the above. (or match it to Googletest project)
- 1. Errore LNK 2005 in Visual Studio 2005
- 2. Esiste un "how to" dettagliato su Unit Testing per Visual Studio 2005
- 3. LNK 2005 in Visual C++ in Visual Studio 2010
- 4. Come inviare messaggi personalizzati in Google C++ Testing Framework?
- 5. Come configurare Visual Studio per Xamarin.Android?
- 6. Esecuzione gtest utilizzando Visual Studio 2010: LNK4098 e LNK2005
- 7. Come configurare Glib su Microsoft Visual Studio 2010?
- 8. Compilare più velocemente in Visual Studio 2005
- 9. Come eseguire il downgrade della soluzione da Visual Studio 2010 a Visual Studio 2005?
- 10. Integrazione mercuriale in Visual Studio 2005?
- 11. Dove si trova Visual Studio 2005 Express?
- 12. Come configurare Visual Studio Code e tslint?
- 13. Configurare Visual Studio per utilizzare più ram
- 14. Quale framework di testing gratuito per C#?
- 15. Come inizializzare Speedup Visual Studio (2005/2008) Toolbox
- 16. Come configurare/configurare Log4Net con ASP.NET (incluso MVC) C# in Visual Studio 2012 ~
- 17. Visual Studio 2012 framework mancanti
- 18. C# 6.0 senza Visual Studio
- 19. CATCH Unit Testing Suite con Visual Studio 2010
- 20. Come configurare Visual Studio per eseguire i test di xUnit.net?
- 21. Visual Studio 2005 Express Edition è ancora legalmente disponibile ovunque?
- 22. Impossibile # include <dirent.h> in Visual Studio 2005
- 23. Configurazione Visual Studio 2005 per stampare i numeri di riga
- 24. Collegamento alla libreria di importazione Python in Visual Studio 2005
- 25. visual studio 2005 designer sposta i controlli e ridimensiona Modulo
- 26. Nessun framework in Visual Studio 2015 RC
- 27. C'è un modo per modificare la versione di .NET Framework di Visual Studio 2005 a 3.5?
- 28. Come vivere con Visual Source Safe 2005?
- 29. C# Unit framework di test per Visual Studio?
- 30. Progetto Visual Studio su MonoDevelop
sol lad qualcuno ha chiesto ... – Boyang