2012-03-29 5 views
5

here açıklandığı gibi google testini kurdum. Ancak, şu anki projem için sınamaları kullanmaya çalıştığımda, 2 LNK4098 uyarıları alıyorum:Visual Studio 2010 kullanarak gtest çalıştırılıyor: LNK4098 ve LNK2005

defaultlib 'MSVCRTD', diğer lib'lerin kullanımıyla çakışıyor; kullanın/NODEFAULTLIB: kitaplık

ve aynı 'LIBCMTD' ve bir grup LNK2005 hatası. Ama aslında bu iki varsayılan kütüphaneyi görmezden geldiğimde, yardımcı olmaz: Daha da fazla hata alıyorum. Sorun ne?

+2

Her şeyin aynı çalışma zamanı kitaplığı yapılandırması kullanılarak nasıl oluşturulacağına bağladığınız yanıtları okudunuz mu? Bazı bölümler gibi ses aldığınız hata, hata ayıklama çalışma zamanı ve diğerlerinin hata ayıklama çalışma zamanı kullanılarak oluşturulanlar kullanılarak oluşturulur. –

cevap

6

Google çalışanı olduğundan emin olmalısınız ve projeniz C Çalışma Zamanı Kitaplığı'nın (CRT) aynı sürümü kullanılarak oluşturulmuştur. Google testi (şu anda v1.6.0) 2 Visual Studio çözüm dosyası sağlar; Dinamik (dll) sürümünü kullanan gtest-1.6.0\msvc\gtest-md.sln ve statik sürümü kullanan gtest-1.6.0\msvc\gtest.sln. Varsayılan olarak, Visual Studio ile oluşturulan projeler dll sürümünü kullanır.

Projenizin CRT'nin statik veya dinamik sürümlerini kullanmasını isteyip istemediğinize karar vermeniz gerekir.

Projenizi statik sürümlerini kullanmaya ayarlamak için Project->Properties'a gidin ve pencerenin sol üst köşesinde, Yapılandırma: Debug'u seçin. Daha sonra aynı pencerede Configuration Properties ->C/C++ ->Code Generation'u seçin. Runtime Library seçeneği Multi-threaded Debug (/MTd) olmalıdır. >Linker - ->Input

Daha sonra GTEST uygun versiyonlarına bağlıyoruz sağlamak, böylece Configuration Properties seçmeniz gerekir. En iyi kitaplığın Hata Ayıklama sürümünün tam yolunu sağlayarak Additional Dependencies alanını düzenleyin (ör. C:\gtest-1.6.0\msvc\gtest\Debug\gtestd.lib).

Yayın Yapılandırması için yine aynı yap, ama Multi-threaded (/MT) için Runtime Library seçeneğini ayarlayarak ve GTEST kütüphanesinden (örn C:\gtest-1.6.0\msvc\gtest\Release\gtest.lib) salımı sürümüne tam yolunu sağlar. Eğer CRT dll sürümleri kullanmaya karar verirseniz

, gtest-1.6.0\msvc\gtest-md\... yerine gtest-1.6.0\msvc\gtest\... olacak GTEST-md kütüphanelere Multi-threaded Debug DLL (/MDd) ve Multi-threaded DLL (/MD) ve bağlantıyı seçin.