dllexport
, dllimport
Khusus Microsoft
Atribut dllexport
kelas penyimpanan dan dllimport
adalah ekstensi khusus Microsoft ke bahasa C dan C++. Anda dapat menggunakannya untuk mengekspor dan mengimpor fungsi, data, dan objek ke atau dari DLL.
Sintaks
__declspec( dllimport )
declarator
__declspec( dllexport )
declarator
Keterangan
Atribut ini secara eksplisit menentukan antarmuka DLL ke kliennya, yang dapat menjadi file yang dapat dieksekusi atau DLL lain. Mendeklarasikan fungsi sebagai dllexport
menghilangkan kebutuhan akan file definisi modul (.def
), setidaknya sehubungan dengan spesifikasi fungsi yang diekspor. Atribut dllexport
menggantikan __export
kata kunci.
Jika kelas ditandai __declspec(dllexport)
, setiap spesialisasi templat kelas dalam hierarki kelas secara implisit ditandai sebagai __declspec(dllexport)
. Ini berarti bahwa templat kelas secara eksplisit dibuat dan anggota kelas harus didefinisikan.
dllexport
dari fungsi mengekspos fungsi dengan nama yang didekorasi, kadang-kadang dikenal sebagai "nama mangling". Untuk fungsi C++, nama yang didekorasi mencakup karakter tambahan yang mengodekan jenis dan informasi parameter. Fungsi atau fungsi C yang dinyatakan sebagai extern "C"
berikut aturan dekorasi nama C. Untuk informasi selengkapnya tentang dekorasi nama dalam kode C/C++, lihat Nama yang didekorasi.
Untuk mengekspor nama yang tidak terdekorasi, Anda dapat menautkan dengan menggunakan file Definisi Modul (.def
) yang menentukan nama yang tidak terdekorasi di bagian EXPORTS
. Untuk informasi selengkapnya, lihat EXPORTS
. Cara lain untuk mengekspor nama yang tidak terdekorasi adalah dengan menggunakan #pragma comment(linker, "/export:alias=decorated_name")
arahan dalam kode sumber.
Saat Anda mendeklarasikan dllexport
atau dllimport
, Anda harus menggunakan sintaks atribut yang diperluas dan __declspec
kata kunci.
Contoh
// Example of the dllimport and dllexport class attributes
__declspec( dllimport ) int i;
__declspec( dllexport ) void func();
Atau, untuk membuat kode Anda lebih mudah dibaca, Anda dapat menggunakan definisi makro:
#define DllImport __declspec( dllimport )
#define DllExport __declspec( dllexport )
DllExport void func();
DllExport int i = 10;
DllImport int j;
DllExport int n;
Untuk informasi selengkapnya, lihat:
END Khusus Microsoft
Lihat juga
Saran dan Komentar
https://aka.ms/ContentUserFeedback.
Segera hadir: Sepanjang tahun 2024 kami akan menghentikan penggunaan GitHub Issues sebagai mekanisme umpan balik untuk konten dan menggantinya dengan sistem umpan balik baru. Untuk mengetahui informasi selengkapnya, lihat:Kirim dan lihat umpan balik untuk