Aracılığıyla paylaş


İçeri ve Dışarı Aktarma

İki yöntem kullanarak genel simgeleri bir uygulamaya aktarabilir veya DLL'den işlevleri dışarı aktarabilirsiniz:

  • DLL'yi oluştururken modül tanımı (.def) dosyası kullanma

  • Ana uygulamadaki bir işlev tanımında veya __declspec(dllimport) anahtar sözcüklerini __declspec(dllexport) kullanma

.def dosyası kullanma

Modül tanımı (.def) dosyası, DLL'nin çeşitli özniteliklerini açıklayan bir veya daha fazla modül deyimi içeren bir metin dosyasıdır. DLL'nin işlevlerini dışarı aktarmak için veya __declspec(dllimport) kullanmazsanız__declspec(dllexport), DLL bir .def dosyası gerektirir.

.def dosyalarını kullanarak bir uygulamaya aktarabilir veya DLL'den dışarı aktarabilirsiniz.

__declspec kullanma

Kodunuzun doğru derlenebilmesi için kullanmanız __declspec(dllimport) gerekmez, ancak bunu yapmak derleyicinin daha iyi kod oluşturmasına olanak tanır. Derleyici, bir işlevin DLL'de var olup olmadığını belirleyebildiğinden, derleyicinin normalde DLL sınırını aşan bir işlev çağrısında mevcut olabilecek bir dolaylılık düzeyini atlayan kod üretmesine olanak tanıdığından daha iyi kod oluşturabilir. Ancak, DLL'de kullanılan değişkenleri içeri aktarmak için kullanmanız __declspec(dllimport) gerekir.

Uygun .def dosyası EXPORTS bölümünde __declspec(dllexport) gerekli değildir. __declspec(dllexport) , .def dosyası kullanmadan bir .exe veya .dll dosyasından işlevleri dışarı aktarmanın kolay bir yolunu sağlamak için eklendi.

Win32 Taşınabilir Yürütülebilir Dosya biçimi, içeri aktarmaları düzeltmek için dokunulması gereken sayfa sayısını en aza indirmek için tasarlanmıştır. Bunu yapmak için, herhangi bir programın tüm içeri aktarma adreslerini İçeri Aktarma Adresi Tablosu olarak adlandırılan tek bir yere yerleştirir. Bu, yükleyicinin bu içeri aktarma işlemlerine erişirken yalnızca bir veya iki sayfayı değiştirmesine olanak tanır.

Ne yapmak istiyorsunuz?

Ayrıca bkz.

Visual Studio'da C/C++ DLL'leri oluşturma