Mengimpor dan Mengekspor
Anda dapat mengimpor simbol publik ke dalam aplikasi atau mengekspor fungsi dari DLL menggunakan dua metode:
Gunakan file definisi modul (.def) saat membangun DLL
Menggunakan kata kunci
__declspec(dllimport)
atau__declspec(dllexport)
dalam definisi fungsi di aplikasi utama
Menggunakan file .def
File module-definition (.def) adalah file teks yang berisi satu atau beberapa pernyataan modul yang menjelaskan berbagai atribut DLL. Jika Anda tidak menggunakan __declspec(dllimport)
atau __declspec(dllexport)
untuk mengekspor fungsi DLL, DLL memerlukan file .def.
Anda dapat menggunakan file .def untuk diimpor ke dalam aplikasi atau untuk mengekspor dari DLL.
Menggunakan __declspec
Anda tidak perlu menggunakan __declspec(dllimport)
kode Anda untuk dikompilasi dengan benar, tetapi melakukannya memungkinkan pengkompilasi untuk menghasilkan kode yang lebih baik. Pengkompilasi dapat menghasilkan kode yang lebih baik karena dapat menentukan apakah fungsi ada di DLL atau tidak, yang memungkinkan pengkompilasi untuk menghasilkan kode yang melewati tingkat tidak langsung yang biasanya ada dalam panggilan fungsi yang melewati batas DLL. Namun, Anda harus menggunakan __declspec(dllimport)
untuk mengimpor variabel yang digunakan dalam DLL.
Dengan bagian EKSPOR file .def yang tepat, __declspec(dllexport)
tidak diperlukan. __declspec(dllexport)
ditambahkan untuk menyediakan cara mudah untuk mengekspor fungsi dari file .exe atau .dll tanpa menggunakan file .def.
Format Win32 Portable Executable dirancang untuk meminimalkan jumlah halaman yang harus disentuh untuk memperbaiki impor. Untuk melakukan ini, ini menempatkan semua alamat impor untuk program apa pun di satu tempat yang disebut Tabel Alamat Impor. Ini memungkinkan pemuat untuk memodifikasi hanya satu atau dua halaman saat mengakses impor ini.