'dan geldiğini belirleme Bağlantı zamanında hangi modülün belirli bir kitaplığın "/ DEFAULTLIB" olarak işlenmesini sağladığını belirlemek için iyi bir yol bulmaya çalışıyorum Visual Studio'dan ayrıntılı linker çıktı.Linker Sorun: Nasıl bir "/ DEFAULTLIB" nin
Durumum, bazı statik kitaplık önkoşullarım var ve her birinin bir sürümü ve bir hata ayıklama sürümü (BlahD.lib ve Blah.lib) var. Herhangi bir nedenle bağlantı süresinde * D.lib'ler, "Ek Bağımlılıklar" olarak belirtilen hata ayıklamayan lib'lerle bir sürüm oluşturmama rağmen varsayılan kitaplıklar olarak işlenir. Statik kitaplıkların hata ayıklama sürümlerini hiç oluşturmazsam, bu * D dosyaları olmaz ve bir bağlayıcı hatası olur (dosyayı açamaz).
Tüm bu rahatsız edici .lib dosyaları için/NODEFAULTLIB belirterek projemi başarılı bir şekilde oluşturmaya başlayabilirim. Tüm sürüm kütüphaneleri bağlanır ve herkes mutludur. Ama burada neler olduğunu anlamak istiyorum. Bu * D.lib dosyalarına neden linker tarafından işlenecek? Bu büyük projede ve bağımlı projelerinde (microsoft support) herşeyi dumpbins eden bir tür senaryo yazmamın tek umudum mu? O zaman bile, dumpbin çıktısında neyi arayacağımı anlamıyorum, bu .lib dosyalarının yanı sıra .obj dosyaları için de geçerli midir?
Bu komutları destekleyen bir sistem kullanıyorsanız, oluşturulan dosyaları komut satırından kolayca bulabilirsiniz: bul. -name "* .directives.txt" | xargs grep –
JamesG
Bu yöntemi en yararlı buldum, ancak birden çok klasördeki yüzlerce nesne dosyasına sahip olarak tüm çıktıları aynı dosyaya yönlendirmeyi daha kolay buldum. Bunun yerine >> c: \ directives.txt ile yönlendirin. – Teknogrebo
Yukarıda belirtilen direktifler, obj ve lib dosyaları içinde düz metin halinde gelir gibi görünüyor. Bu nedenle dumpbin çağırmaya gerek yok.Benim için sadece komut satırından aşağıdakileri çalıştırdım: "findstr/m/s/c:"/DEFAULTLIB: "" mylib * .obj * .lib' –