2011-06-18 13 views
5

Visual C++ 2008'de bir DLL yapıyorum ve çalışma zamanını statik olarak DLL'ye bağlı olmak istiyorum. Bu yüzden proje seçeneklerine girdim ve Runtime Library'yi Multi-threaded (/MT)'a ayarladım. Bu her zaman geçmişte başka projeler için çalıştı. Ama bunu inşa ettiğimde hala listede MSVCR90.dll gösteren Bağımlılık Walker ile sona erer./MT seçeneğini ayarladığım halde neden bir MSVCR90 bağımlılığı görüyorum?

Bunun nedenini bilen var mı?

+2

Açıkçası DLL'nizi yükleyen EXE, aynı seçenek ile oluşturulmamış. Ya da yüklü başka bir DLL, sadece bir tane alır. –

+0

@Hank: Burada uygulanamaz. Bağımlılık Yürütücüsüne bakıyorum ve ağacın üst seviyesinde, başka bir yüklenen DLL altında değil. –

+1

'MSVCR90''daki hangi dışa aktarma sizin DLL'ye bağımlı? –

cevap

4

Proje + Özellikleri, Bağlayıcı, Komut Satırı./Verbose seçeneğini ekleyin. Build + Rebuild. Çıktı penceresi size semboller arayan linker'i gösterir. Msvcr90.dll için bağımlılığı çeken msvcrt90.dll dosyasına dikkat edin. Bu özellik,/MD ile derlenmiş bir veya daha fazla .obj dosyası içeren bir .lib dosyasını bağlayan bir .lib dosyasıdır. Msvcrt.lib bağımlılığı #pragma comment (lib, msvcrt.lib) yönergesi ile enjekte edilir. Bu, bağlayıcıyı açıkça Linker, Giriş, Ek Bağımlılıklar'da bir bağımlılık olarak belirtmeden msvcrt.lib'de arama yapmasını söyler.

+0

Teşekkürler, bu tam olarak ne olduğu ortaya çıktı. –

İlgili konular