2013-01-10 20 views
8

Çıktı kitaplığı olan bir projem var (.lib). Proje bir üçüncü parti kütüphanesine (ayrıca bir .lib) bağlıdır. Bu üçüncü parti bağımlılığı hakkında endişelenmek için kütüphanem üzerine inşa edilen projelerden kaçınmak için, kütüphaneciyi benimkilere dahil etmek için kullandım (Proje Özellikleri> Kütüphaneci> Genel> Ek Bağımlılıklar). 'PDB:Visual Studio'da kütüphaneci ile .pdb dosyaları dahil

MyProject.lib (someThirdPartyObjectFile.obj): uyarı LNK4099 benim kütüphaneye bağlayan ayrı çalıştırılabilir proje oluştururken

Ancak, ben çizgisinde uyarıların bir demet olsun vc110.pdb '' MyProject.lib (someThirdPartyObjectFile.obj) 'ile veya' \ vc110.pdb 'ile bulunamadı; Bunun anlamı hiçbir ayıklama bilgi

sanki nesne bağlama Ben ancak üçüncü parti kütüphaneye, benim kütüphaneye ait herhangi bir kod hata ayıklama mümkün olacağını (ı varsayalım).

Visual Studio'ya üçüncü taraf kitaplığı PDB'nin içeriğini de içerecek şekilde nasıl ekleyebilirim?

+0

, vb...). Bu uyarıyı bir kez yaptım, ama sonuçsuzdu (ve nasıl tamir ettiğimi hatırlamıyorum). Yine de VS2008 ile yapıldı. Belki de hata ayıklama bilgisinin gerçekten kullanılıp kullanılmadığını görmek için oluşturup hata ayıklamayı deneyebilirsiniz. Son: statik veya dinamik lib? – Synxis

+1

@Synxis Statik lib. – JBentley

+0

@Synxis Şimdiye kadar önerilen çözümleri denemeye henüz fırsat bulamadım. Bunu yakında yapacağım. – JBentley

cevap

6

Statik kitaplık muhtemelen taşındı, bu yüzden derleyici sembolleri bulamıyor. (/Zi ve /ZI ayrı dosyaya koydu oysa) kodunda hata ayıklama bilgilerini gömer /Z7 için

  • değişim ayıklama biçimi,: Birkaç seçenek var.
  • pdb dosyasının çıkış yapılandırmasını değiştir (VS2005 için muhtemelen VS2010'da benzer şekilde Settings > C++ > Output Files > Program Database File Name idi).

Daha fazla bilgiyi here ve here bulabilirsiniz.

+3

Teşekkürler, ben bu sorunu tekrar ettim ve cevabınızdan sorunun ne olduğunu anladım. Visual Studio, varsayılan olarak, PDB dosyasını Çıkış klasörü yerine Ara madde klasörüne yerleştirir ve böylece üçüncü parti kitaplığımın PDB'si, bağlandığımda bulunamadı. '$ (IntDir) vc $ (PlatformToolsetVersion) .pdb'den '$ (OutDir) vc $ (PlatformToolsetVersion) .pdb'' den bahsettiğiniz ayarı değiştirmek, PDB'nin .lib çıkışıyla aynı klasöre yerleştirilmesini sağlar. Visual Studio'nun buna neden varsayılan olarak bir fikrim yok, çünkü PDB'yi ara klasöre yerleştirmek bana bir anlam ifade etmiyor. – JBentley

0

Mülkiyet Sayfalar (Alt + F7) Linker, tüm seçeneklere Git ayıklama Bilgi Yok Pozisyon içine set üret

Hala pdb` dosyası `olmadan hata ayıklama, ancak (hata ayıklama bilgi olmadan fonksiyon isimleri olacak
+0

Neden? Ayrıca, olumsuz yan etkileri olabilir mi? – anatolyg

İlgili konular