Uptime: %95
Doluluk: %35 5 Ana Kategori 10 Alt kategoride Toplam:4.171 Dosya bulunmaktadır.
Dökümanlar
Dll leri yaratmak
Bir dll yazmak, bir program yazmaktan daha kolaydır. Bir takım sentaks kurallarına uyarak yazdığınız programınızı linker da birleştirirken sadece /DLL anahtarını kullanırsınız.
Bir program, bir dlldeki fonksiyon/ları kullanacağı zaman ilk önce , bu dll?i kendi adres alanına yüklemelidir. Bu 2 tane yöntemle yapılır, yöntemlerin isimleri çok önemli değil ama biri derleme anı ekleme, biri çalışma anı ekleme diyebiliriz. Ama her iki yöntemde de fonksiyonu kullanmadan önce dll mutlaka adres alanına yüklenmeli. ( Bu adres alanları ,process vs ilgili yazı isteyen olursa istekte bulunursa sevinirim ).
Dll, prosessin adres alanına yüklendikten sonra, artık dll ?e ait fonksiyonlar, sanki programınızın içindeki sıradan fonksiyonlardan biriymiş gibi kullanabilirsiniz. Hatta threadleriniz bu fonksiyonların bir dll?den geldiğini bile anlamayabilir. Kendi fonksiyonunuz , dll?deki bir fonksiyonu çağırdığında, fonksiyona göndermek istediği parametreleri stack (yığıt) alanına basar. Daha sonra dll?deki fonksiyon çalışırken yığıttan ilgili parametreleri çekerek, hangi parametrelerler çalışması gerektiğini anlar. Buradan anlaşılması gereken nokta, dll ile process veya thread aynı yığıt alanını kullanır. Dll?lerdeki fonksiyonlarınız bir bellek alanı ayırıyorsa, bunuda kendisinin eklendiği process?in bellek alanından ayırır. Mesela, diyelimki dll?deki bir fonksiyon dinamik bir alan tahsis etti, sonrada processinizden bu dll?I unmap ettiniz ( şimdilik bunu dll?I kovmak olarak düşünün ), bu dinamik alan gidermi ? Hayır, gitmez, çünkü bu adres bölümü processin adres bölümünde ayrılmıştır ve process yok edene dek veya processin kendisi yok olana dek orada duracaktır.
Peki Dll?imizde global değişkenler tanıttık diyelim, ve birden fazla process bu dll?I kendisine bağladı, bu global değişkenler ne olur ? . Aslında sorumuzun cevabı yukarda var. Her dll, kendisini bağlayan process?in adres alanına yüklenir, dolayısıyla global nesneleri, o adres alanında global olur, başka bir process?de bu dll?I bağlarsa onun global değişkenleri bağımsız olur.
Aslında biraz değişik yöntemlerle, bazı değişkenlerin bir dll?de statik yapmak mümkün. Yani ne kadar başka process?e yüklenirse yüklensin bu statik alanlar birbirlerini etkileyecek şekilde ayarlanabilir. Bunun örneğini daha sonra göreceğiz.
Bu Döküman Hakkında Ne Düşünüyorsunuz?
Bu Döküman İçin Yorum Yapılmadı. İlk Olmak İster misin?