È necessario garantire googletest e il progetto viene creato utilizzando la stessa versione della libreria di runtime C (CRT). Google test (attualmente v1.6.0) fornisce 2 file di soluzione di Visual Studio; gtest-1.6.0\msvc\gtest.sln
che utilizza la versione statica e gtest-1.6.0\msvc\gtest-md.sln
che utilizza la versione dinamica (dll). Per impostazione predefinita, i progetti creati tramite Visual Studio utilizzano la versione dll.
È necessario decidere se si desidera che il progetto utilizzi le versioni statiche o dinamiche del CRT.
Per impostare il progetto in modo che utilizzi le versioni statiche, andare a Project->Properties
e in alto a sinistra nella finestra, selezionare Configurazione: Debug
. Quindi in questa stessa finestra selezionare Configuration Properties
->C/C++
->Code Generation
. L'opzione per Runtime Library
dovrebbe essere Multi-threaded Debug (/MTd)
.
è quindi necessario per garantire la collega alle versioni appropriate di GTEST, in modo da selezionare Configuration Properties
->Linker
->Input
. Modifica il campo Additional Dependencies
fornendo il percorso completo della versione Debug della libreria gtest (ad esempio C:\gtest-1.6.0\msvc\gtest\Debug\gtestd.lib
).
fare lo stesso ancora una volta per la configurazione di uscita, ma impostando l'opzione Runtime Library
per Multi-threaded (/MT)
e di fornire il percorso completo alla versione della libreria GTEST (ad esempio C:\gtest-1.6.0\msvc\gtest\Release\gtest.lib
).
Se si decide che si desidera utilizzare le versioni DLL del CRT, scegliere Multi-threaded Debug DLL (/MDd)
e Multi-threaded DLL (/MD)
, e il link alle librerie GTEST-md che saranno in gtest-1.6.0\msvc\gtest-md\...
piuttosto che gtest-1.6.0\msvc\gtest\...
.
Hai letto le risposte che hai collegato a come tutto deve essere creato utilizzando la stessa configurazione della libreria di runtime? L'errore che si sta facendo sembra che alcune parti siano costruite usando il runtime non di debug e altre create usando il runtime di debug. –