DLL dosyası nedir?
DLL (Dynamic Link Library), Windows ve Windows Server işletim sistemlerinde farklı uygulamaların ortak biçimde kullanabildiği işlevler, sınıflar, kaynaklar ve sürüm bilgileri içeren dinamik kitaplık dosyalarıdır. Bir DLL dosyası tek başına çalıştırılmaz; uygulamalar tarafından süreç içinde yüklenir ve çağrılan fonksiyonları sağlamak için Windows Loader tarafından bağlanır. Bu yaklaşım, kodun yeniden kullanımını ve güncellemelerin tek bir noktadan yapılmasını kolaylaştırır.
Kısa tarihçe
DLL kavramı Windows 3.x döneminde ortaya çıkmış, Windows 95/NT ile birlikte PE (Portable Executable) biçimi üzerine inşa edilerek olgunlaşmıştır. Günümüzde hem 32-bit (x86) hem de 64-bit (x64) DLL’ler yaygındır. Zamanla sembol yükleme, sürümleme, adres alanı düzenlemesi (ASLR) ve Veri Yürütme Engellemesi (DEP) gibi güvenlik ve kararlılık özellikleri DLL ekosistemine entegre edilmiştir.
Temel özellikler
- Paylaşılan kod ve kaynaklar: Aynı işlev kümesini birden fazla uygulama kullanabilir, bellek ve disk alanı tasarrufu sağlar.
- PE tabanlı yapı:
.text,.data, kaynaklar, import/export tabloları gibi bölümler içerir; dışa aktarılan fonksiyonlar uygulamalar tarafından dinamik olarak çözülür. - COM ve eklenti mimarileri: Birçok COM bileşeni ve uygulama eklentisi in-proc sunucu olarak DLL şeklinde dağıtılır.
- .NET desteği: Yönetilen kodda da
.dlluzantısı kullanılır; bu durumda CLR meta verileri ve IL bulunur (native PE’den farklıdır). - Sürümleme ve yan yana (side-by-side) dağıtım: Bağımlılık cehennemini azaltmak için manifest ve SxS yükleme desteklenir.
Platformlar ve uyumluluk
DLL dosyaları doğrudan Windows ve Windows Server üzerinde çalışır. Linux ve macOS gibi platformlarda Wine veya benzeri uyumluluk katmanları yoluyla bazı DLL’ler yüklenebilir. Önemli not: 32-bit uygulamalar 64-bit DLL’leri, 64-bit uygulamalar ise 32-bit DLL’leri doğrudan yükleyemez; mimari uyumu şarttır.
Açma, analiz etme ve düzenleme
DLL’ler çift tıklamayla açılmaz; ilgili uygulama veya sistem bileşeni tarafından yüklenir. Analiz için Dependency Walker veya benzeri araçlarla dışa aktarılan semboller ve bağımlılıklar incelenebilir. Geliştiriciler Visual Studio, dumpbin, ildasm (yönetilen DLL’ler için) ve Process Explorer gibi araçlardan yararlanır. COM bileşenleri regsvr32 ile kayıt/çöz-kayıt edilebilir; belirli fonksiyonların test amaçlı çağrılması için rundll32.exe kullanılabilir. Hata ayıklamada PDB sembolleri ve dijital imza doğrulaması kritik önemdedir.
Yaygın kullanım alanları
- Uygulama mantığının modülerleştirilmesi ve yeniden kullanılabilir kütüphaneler
- Oyun motoru modülleri, medya codec’leri, yazıcı/tarayıcı eklentileri
- Kurumsal uygulamalarda katmanlı mimariler (UI, iş mantığı, veri erişimi)
MIME türleri
Yaygın olarak application/x-msdownload ve genel amaçlı application/octet-stream kullanılır.