2011-09-19 12 views
7

Ho un progetto grande e complicato che sta finalmente ricevendo unit test. Ho creato googleTest 1.6.0 in locale con Visual Studio 2010, i file di progetto creati con cmake come specifica il README.Linking googleTest in VS2010 risultati in LNK2005 a causa di altre librerie dipendenti

Questo progetto ha molte librerie dipendenti che sono staticamente e dinamicamente collegate. Molti di loro sono proprietari. Tutti i tentativi di collegamento generano 220 di tali errori. Ecco un campionario:

MSVCPRTD.lib (MSVCP100D.dll): l'errore LNK2005: "public: void std :: __cdecl _ Container_base12 :: _ Orphan_all (void)"? (_Orphan_all @ @ _Container_base12 std @@ QEAAXXZ) già definito in gtest.lib (GTEST-all.obj)

libcpmtd.lib (cerr.obj): l'errore LNK2005: "protetta: char * __cdecl std :: basic_streambuf> :: _ Gndec (void) "(? _Gndec @? $ Basic_streambuf @ DU? $ Char_traits @ D @ std @@@ std @@ IEAAPEADXZ) già definito in msvcprtd.lib (MSVCP100D.dll)

LIBCMTD.lib (setlo cal.obj): errore LNK2005: _configthreadlocale già definito in MSVCRTD.lib (MSVCR100D.dll)

LINK: avviso LNK4098: defaultlib 'MSVCRTD' è in conflitto con l'uso di altre librerie; uso/NODEFAULTLIB: biblioteca LINK: avviso LNK4098: defaultlib conflitti 'LIBCMTD' con utilizzo di altre librerie; uso/NODEFAULTLIB: biblioteca

fatale errore LNK1169: uno o più simboli definiti moltiplica trovato

ho provato la bandiera/NODEFAULTLIB, e ho cercato di ignorare semplicemente MSVCPRTD.lib , MSVCRTD.lib, e LIBCMTD.lib, come suggerito, ma poi ho soffrono di simboli non risolti ...

Sia il progetto e googleTest sono compilati con x64,/MP,/MDd, e nessun/CLR.

Ho giocato con i flag del compilatore, chiedendomi se c'è una sorta di disallineamento della versione. La discarica, nella misura in cui l'ho capita, non ha lasciato intendere nulla che potrei capire. Speravo per un

risposta

10

Sembra che la risposta alla tua domanda sia stata effettuata in Google Talk's FAQ. Assicurarsi che tutte le librerie utilizzino l'impostazione/MD (d).

+1

Si scopre lei ha ragione. Avevo dimenticato di aver postato questa domanda prima di imbattersi nella risposta attraverso il mio processo. –

+0

Sebbene abbia diversi anni, è possibile correggere il (ora) collegamento errato alle FAQ: https://github.com/google/googletest/blob/master/googletest/docs/FAQ.md#i-am-building-my -project-con-google-test-in-visual-studio-e-all-im-sempre-è-un-po-di-linker-errori-o-avvertimenti-aiuto – PiJ