DLL Türleri
Bu konu, oluşturacağınız DLL'in türünü belirlemenize yardımcı olacak bilgiler sağlamaktadır.
Farklı Türdeki Kullanılabilir DLL'ler
Visual C++ kullanarak, C'de veya Microsoft Foundation Class (MFC) kitaplığı kullanmayan C++'ta Win32 DLL'leri oluşturabilirsiniz. Win32 Uygulama Sihirbazı ile MFC DLL olmayan bir proje oluşturabilirsiniz.
MFC kitaplığı hem statik bağlantı kitaplıklarında hem de bazı DLL'lerde MFC DLL Sihirbazı ile kullanılabilirdir. DLL'niz MFC kullanıyorsa, Visual C++ üç farklı DLL geliştirme senaryosu destekler:
MFC'ye statik olarak bağlanan normal bir DLL oluşturma
MFC'ye dinamik olarak bağlanan normal bir DLL oluşturma
MFC'ye daima dinamik olarak bağlanan bir MFC uzantı DLL'si oluşturma
Hangi konu hakkında daha fazla bilgi edinmek istiyorsunuz?
Hangi DLL türünün kullanılacağı
Hangi DLL Türünü Kullanacağınıza Karar Verme
DLL'niz MFC kullanmıyorsa, MFC olmayan bir Win32 DLL yapılandırmak için Visual C++ kullanın. DLL'nizi (statik veya dinamik olarak) MFC'ye bağlama önemli disk alanı ve bellek alır. DLL dosyanız aslında bir MFC kullanmadığı sürece MFC'ye bağlantı yapmamanız gerekir.
DLL'niz MFC kullanacaksa ve MFC veya MFC olmayan uygulamalar tarafından kullanılacaksa, ya MFC'ye dinamik olarak bağlanan normal bir DLL yapılandırmalı ya da MFC'ye statik olarak bağlanan normal bir DLL yapılandırmalısınız. Çoğu durumda, DLL'in dosya boyutu daha küçük olacağından ve MFC'nin paylaşılan sürümünden belleğe yapılan kayıtlar önemli olabileceğinden muhtemelen MFC'ye dinamik olarak bağlanan normal bir DLL kullanmak isteyeceksiniz. MFC'ye statik olarak bağlarsanız, kendi özel MFC kitaplık kodu kopyasını yüklediğinden, DLL dosyanızın boyutu daha büyük olacaktır ve daha fazla bellek alanı dolduracaktır.
MFC'nin kendisini bağlamak gerekmediğinden, dinamik olarak MFC'ye bağlanan bir DLL oluşturmak, statik olarak MFC'ye bağlanan bir DLL oluşturmaktan daha hızlıdır. Bu, özellikle bağlayıcının hata ayıklama bilgilerini sıkıştırmasının gerektiği hata ayıklama yapılarında doğrudur. Hata ayıklama bilgilerini zaten içeren bir DLL ile bağlandığında, DLL dosyanızın içinde sıkıştırmak için daha az hata ayıklama bilgisi olur.
MFC öğesine dinamik olarak bağlanmanın tek olumsuz yanı Mfcx0.dll ve Msvcrxx.dll paylaşılan DLL'lerini (veya benzer dosyaları) DLL ile dağıtmanız gerektiğidir. mfc DLL'leri ücretsiz olarak yeniden dağıtılabilir ancak yine de DLL'leri kurulum programınıza yüklemeniz gerekir. Ayrıca, programınız ve MFC DLL'lerinin kendilerinin de kullandığı C çalışma zamanı kütüphanesi içeren Msvcrxx.dll öğesini göndermeniz gerekir.
DLL'niz yalnızca MFC yürütülebilir dosyaları tarafından kullanılacaksa, normal bir DLL veya uzantı DLL'si kullanma arasında bir seçim hakkınız bulunur. DLL'niz varolan MFC sınıflarından türetilmiş yeniden kullanılabilir sınıfları tümleştirirse veya uygulama ve DLL arasında MFC'den türetilmiş nesneler geçirmek istiyorsanız, bir uzantı DLL'si yapılandırmanız gerekir.
DLL'niz MFC'ye dinamik olarak bağlanıyorsa, MFC DLL'leri DLL'niz ile yeniden dağıtılabilir. Bu mimari, özellikle disk alanını kaydetmek ve bellek kullanımını en aza indirmek için birden fazla yürütülebilir dosya arasında sınıf kitaplığının paylaşımına ilişkin yararlıdır.
Visual C++, 4.0 sürümünden önce MFC: USRDLL ve AFXDLL kullanan yalnızca iki tür DLL'yi destekliyordu. MFC'ye statik olarak bağlı normal DLLs'in önceki USRDLL ile aynı özellikleri vardır. MFC uzantı DLL'leri eski AFXDLL'ler ile aynı özelliklere sahiptir.