Gece   26-11-2021 Saat 20:27
#1
DLL Nedir?
DLL (Dynamic Link Library) yani dinamik link kütüphaneleri olarak isimlendirilen dosyalar Windows’un en önemli parçalarından birisidir. Bir DLL dosyası .exe gibi çalıştırılabilir bir programın icrası anında çağırabileceği fonksiyonları barındırmaktadır.

Yani diğer bir değişle dll, programların dinamik olarak bağlantı kurabileceği fonksiyonların bir kütüphanesidir.

Bağlantılar statik ve dinamik olmak üzere ikiye ayrılmaktadır:

1-) Statik bağlantılar icra sırasında değişmezler ve programınızın icrası sırasında kütüphane içindeki
fonksiyonlara erişim için gerekli tüm adres bilgileri icra edilebilir dosya derlendiği sırada
belirlenmiştir ve sabittir.

2-) Dinamik bağlantılar ise sadece gerektiği zaman kurulurlar. Eğer programınız ihtiyaç duyduğu bir
fonksiyonu kendi içinde bulamazsa o zaman Windows gerekli dll’i yükler ve içindeki fonksiyonları
programınızın emrine verir. Bu sırada Windows dll içindeki tüm fonksiyonların adreslerini çözümler
ve dinamik olarak programınız arasında bağlantı kurulmasını sağlar.

Örneğin Visual Basic içinde kullanılan tüm özel kontroller birer dll’dir. Tek farkı sadece Visual Basic tarafından işlenen mesajların kendine özgü işlem gerektirmesidir.

Neden DLL kullanılır?

Dll neden kullanmamız gerektiğini 4 ana başlık altında toplayabiliriz.

- C İcra anı (Run-Time) fonksiyonlarına erişim:

C İcra anı kütüphanesi Visual Basic programcılarına bahşedilmeyen bir çok yararlı fonksiyonları barındırır. Örneğin _dos_getdiskfree fonksiyonu diskteki mevcut boş alanı hesaplamak için kullanılmaktadır.

- Windows API’ye (Uygulama Programlama Arayüzü) Erişim:

Bazı Windows API fonksiyonları "Callback" özelliğine sahiptir. Yani bunu açıklamak gerekirse API çağrısının işlenmesi sırasında Windows’un o fonksiyonu rekürsif olarak yani tekrarlı olarak çağırması diyebiliriz. Buna örnek olarak "EnumTaskWindows" fonksiyonunu verebiliriz. Bu fonksiyon o anda icra edilen görevlerin sahiplendiği pencerelerin "handle" yani bir çeşit tanımlayıcısını geri döndürmede kullanılır diyebiliriz.

- Hız:

C, 0 ve 1 gibi doğal makine diline en yakın programlama dillerinden biridir. Bu programlarınızın eğer doğru olarak kodlanmış ise c dilinde en hızlı olarak çalışacağı anlamına gelmektedir.

- Kullanılacağı zaman yüklenme:

Bir dll içindeki kod veya veri sadece gerektiği zaman belleğe alınır. Bu programların ihtiyaç duyduğu bellek miktarının düşük olmasını sağlamakla beraber yüklenme süresini azaltırlar.

Bir Dll’in Anatomisi

Her dll, çalıştırılabilir dosyalar tarafından kullanılabilmesi için içinde mutlaka bir LibMain fonksiyonu ve Windows Çıkış Prosedürü(WEP) bulundurması gerektirmektedir.

- LibMain:

Bir DLL yukarıda da belirtildiği gibi mutlaka LibMain fonksiyonu barındırması gerekir. LibMain fonksiyonu DLL’in yüklenmesini isteyen ilk program tarafından çağırılır ve aşağıdaki açıklanan parametreler bu fonksiyona aktarılır:

- HANDLE : DLL örneğinin handle değerini belirtir.
- WORD : Kütüphane’nin veri segmentini belirtir.
- WORD : Yığın boyutu
- LPSTR : Komut satırı parametreleri

-WEP:

WEP(Windows Çıkış Prosedürü) bir dll’in bellekte artık görevi bittiğinde temizlenmesi işlemini gerçekleştirir. Windows işletim sistemlerinde her dll içinde bir tane WEP fonksiyonu gereklidir. Windows 3.1 için bu seçimliktir. Bir WEP fonksiyonu Visual C’de modül tanımlama dosyasında (.DEF) aşağıdaki gibi bulunmalıdır.

EXPORTS
WEP

- İhraç edilmiş Fonksiyonlar:

Bu fonksiyonlar sizin DLL içinden çağırmak istediğiniz fonksiyonlardır. Bunlar geriye doğru uyumluluk sağlamak için _export._export ile gösterilir. Ayrıca çağırmak istediğiniz tüm fonksiyonlar dll’inizin (.DEF) dosyası içinde listelenmiş olması gerekmektedir
Mango   29-11-2021 Saat 20:03
#2
Teşekkür ederim kral, Faydalı adamsın eyw.
İfadeleri İptal Et?
  

Konuyu Okuyanlar: 1 Ziyaretçi