Bagikan melalui


/EXPORT (Mengekspor Fungsi)

Mengekspor fungsi berdasarkan nama atau ordinal, atau data, dari program Anda.

Sintaks

/EXPORT:entryname[,@ordinal[,NONAME]][,DATA]

Keterangan

Opsi /EXPORT menentukan fungsi atau item data untuk diekspor dari program Anda sehingga program lain dapat memanggil fungsi atau menggunakan data. Ekspor biasanya ditentukan dalam DLL.

Nama entri adalah nama fungsi atau item data seperti yang akan digunakan oleh program panggilan. ordinal menentukan indeks ke dalam tabel ekspor dalam rentang 1 hingga 65.535; jika Anda tidak menentukan ordinal, LINK akan menetapkannya. Kata kunci NONAME mengekspor fungsi hanya sebagai ordinal, tanpa nama entri.

Kata kunci DATA menentukan bahwa item yang diekspor adalah item data. Item data dalam program klien harus dinyatakan menggunakan extern __declspec(dllimport).

Ada empat metode untuk mengekspor definisi, yang tercantum dalam urutan penggunaan yang direkomendasikan:

  1. __declspec(dllexport) dalam kode sumber

  2. Pernyataan EXPORTS dalam file .def

  3. Spesifikasi /EXPORT dalam perintah LINK

  4. Direktif komentar dalam kode sumber, dari formulir #pragma comment(linker, "/export: definition ").

Semua metode ini dapat digunakan dalam program yang sama. Ketika LINK membangun program yang berisi ekspor, link juga membuat pustaka impor, kecuali file .exp digunakan dalam build.

LINK menggunakan bentuk pengidentifikasi yang didekorasi. Pengkompilasi menghiasi pengidentifikasi saat membuat file .obj. Jika nama entri ditentukan ke linker dalam formulir yang tidak terdekorasi (seperti yang muncul di kode sumber), LINK mencoba mencocokkan nama. Jika tidak dapat menemukan kecocokan unik, LINK akan mengeluarkan pesan kesalahan. Gunakan alat DUMPBIN untuk mendapatkan formulir nama pengidentifikasi yang didekorasi saat Anda perlu menentukannya ke linker.

Catatan

Jangan tentukan bentuk pengidentifikasi C yang dihiasi yang dideklarasikan __cdecl atau __stdcall.

Jika Anda perlu mengekspor nama fungsi yang tidak terdekorasi, dan memiliki ekspor yang berbeda tergantung pada konfigurasi build (misalnya, dalam build 32-bit atau 64-bit), Anda dapat menggunakan file DEF yang berbeda untuk setiap konfigurasi. (Arahan kondisi preprosektor tidak diizinkan dalam file DEF.) Sebagai alternatif, Anda dapat menggunakan #pragma comment direktif sebelum deklarasi fungsi seperti yang ditunjukkan di sini, di mana PlainFuncName adalah nama yang tidak terdekorasi, dan _PlainFuncName@4 merupakan nama fungsi yang didekorasi:

#pragma comment(linker, "/export:PlainFuncName=_PlainFuncName@4")
BOOL CALLBACK PlainFuncName( Things * lpParams)

Untuk mengatur opsi linker ini di lingkungan pengembangan Visual Studio

  1. Buka kotak dialog Halaman Properti proyek. Untuk detailnya, lihat Mengatur pengkompilasi C++ dan membuat properti di Visual Studio.

  2. Pilih halaman properti Properti Konfigurasi>Penaut>Baris Perintah.

  3. Masukkan opsi ke dalam kotak Opsi Tambahan.

Untuk menyetel opsi linker ini secara terprogram

Baca juga

Referensi linker MSVC
Opsi MSVC Linker