Aracılığıyla paylaş


Dışa ve İçe Aktarma

Uygulmaya ortak simgeleri içe aktarmayı ve DLL'den işlevleri dışa aktarmayı iki yöntem kullanarak yapabilirsiniz:

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

  • Ana uygulamadaki işlev tanımında __declspec(dllimport) veya __declspec(dllexport) anahtar kelimelerini kullanma

.def dosyası kullanma

Modül tanım (.def) dosyası, DLL'in çeşitli özniteliklerini tanımlayan bir veya daha fazla modül deyimi içerir. DLL işlevlerini dışa aktarma için __declspec(dllimport) veya __declspec(dllexport) kullanmıyorsanız, DLL .def dosyası gerektirir.

.def dosyalarını uygulamada içe aktarma için veya DLL'den dışa aktarmak için kullanabilirsiniz.

__declspec kullanma

Visual C++, daha önce 16 bit Visual C++ sürümünde kullanılan __export anahtar sözcüğünü değiştirmek için __declspec(dllimport) ve __declspec(dllexport) kullanır.

Kodunuzun doğru şekilde derlenmesi için __declspec(dllimport) kullanmanıza gerek yoktur, ancak bunu yaparak derleyicinin daha iyi bir kod oluşturmasını sağlarsınız. Derleyici daha iyi kod oluşturur çünkü bir işlevin DLL'de olup olmadığını belirleyebilir böylece derleyicinin DLL sınırını geçen işlev çağrısında normalde var olan dolaylı yol düzeyini atlayan kod oluşturmasını sağlar. Ancak, DLL'de kullanılan değişkenleri içe aktarmak için __declspec(dllimport) kullanmalısınız.

Uygun .def dosyası EXPORTS bölümüyle, __declspec(dllexport) gerekli olmaz. __declspec(dllexport) .exe veya .dll dosyasından .def dosyası kullanmadan işlevleri dışa aktarmada kolay bir yol sağlaması için eklenmişti.

Win32 Taşınabilir Çalıştırılabilir biçimi içe aktarmaları düzeltmek üzere değiştirilmesi gereken sayfaların sayısını en aza indirmek için tasarlanmıştır. Bunu yapmak için, her program için bütün içe aktarma adreslerini Aktarım Adres Tablosu denen tek yere koyar. Bu yükleyicinin içe aktarmalara erişirken sadece bir veya iki sayfa değiştirmesini sağlar.

Ne yapmak istiyorsunuz?

Ayrıca bkz.

Kavramlar

DLL'ler