Bagikan melalui


modul (C++)

Menentukan blok pustaka dalam file .idl.

Sintaks

[ module (type=dll, name=string, version=1.0, uuid=uuid, lcid=integer, control=boolean, helpstring=string, helpstringdll=string, helpfile=string, helpcontext=integer, helpstringcontext=integer, hidden=boolean, restricted=boolean, custom=string, resource_name=string,) ];

Parameter

jenis
(Opsional) Dapat berupa salah satu hal berikut:

  • dll Menambahkan fungsi dan kelas yang memungkinkan DLL yang dihasilkan berfungsi sebagai server COM dalam proses. Ini adalah nilai default.

  • exe Menambahkan fungsi dan kelas yang memungkinkan executable yang dihasilkan berfungsi sebagai server COM di luar proses.

  • service Menambahkan fungsi dan kelas yang memungkinkan executable yang dihasilkan berfungsi sebagai layanan NT.

  • unspecified Menonaktifkan injeksi kode ATL yang terkait dengan atribut modul: injeksi kelas Modul ATL, _AtlModule instans global, dan fungsi titik masuk. Tidak menonaktifkan injeksi kode ATL karena atribut lain dalam proyek.

nama
(Opsional) Nama blok pustaka.

versi
(Opsional) Nomor versi yang ingin Anda tetapkan ke blok pustaka. Nilai defaultnya adalah 1,0.

uuid
ID unik untuk pustaka. Jika Anda menghilangkan parameter ini, ID akan dibuat secara otomatis untuk pustaka. Anda mungkin perlu mengambil uuid blok pustaka Anda, yang dapat Anda lakukan dengan menggunakan pengidentifikasi __uuidof(nama pustaka).

Icid
Parameter pelokalan. Lihat lcid untuk informasi selengkapnya.

kontrol
(Opsional) Menentukan bahwa semua coclasses dalam pustaka adalah kontrol.

helpstring
Menentukan pustaka tipe.

helpstringdll
(Opsional) Mengatur nama file .dll yang akan digunakan untuk melakukan pencarian string dokumen. Lihat helpstringdll untuk informasi selengkapnya.

helpfile
(Opsional) Nama file Bantuan untuk pustaka jenis.

helpcontext
(Opsional) ID Bantuan untuk pustaka tipe ini.

helpstringcontext
(Opsional) Lihat helpstringcontext untuk informasi selengkapnya.

Tersembunyi
(Opsional) Mencegah seluruh pustaka ditampilkan. Penggunaan ini ditujukan untuk digunakan dengan kontrol. Host perlu membuat pustaka jenis baru yang membungkus kontrol dengan properti yang diperluas. Lihat atribut MIDL tersembunyi untuk informasi selengkapnya.

Dibatasi
(Opsional) Anggota pustaka tidak dapat dipanggil sembarangan. Lihat atribut MIDL terbatas untuk informasi selengkapnya.

custom
(Opsional) Satu atau beberapa atribut; ini mirip dengan atribut kustom . Parameter pertama yang dikustomisasi adalah GUID atribut. Contohnya:

[module(custom={guid,1}, custom={guid1,2})]

resource_name
ID sumber daya string dari file .rgs yang digunakan untuk mendaftarkan ID APLIKASI DLL, dapat dieksekusi, atau layanan. Ketika modul berjenis layanan, argumen ini juga digunakan untuk mendapatkan ID string yang berisi nama layanan.

Catatan

File .rgs dan string yang berisi nama layanan harus berisi nilai numerik yang sama.

Keterangan

Kecuali Anda menentukan parameter terbatas untuk emitidl, modul diperlukan dalam program apa pun yang menggunakan atribut C++.

Blok pustaka akan dibuat jika, selain atribut modul , kode sumber juga menggunakan dispinterface, ganda, objek, atau atribut yang menyiratkan kolase.

Satu blok pustaka diperbolehkan dalam file .idl. Beberapa entri modul dalam kode sumber akan digabungkan, dengan nilai parameter terbaru sedang diimplementasikan.

Jika atribut ini digunakan dalam proyek yang menggunakan ATL, perilaku atribut berubah. Selain perilaku di atas, atribut juga menyisipkan objek global (disebut _AtlModule) dari jenis yang benar dan kode dukungan tambahan. Jika atribut mandiri, atribut menyisipkan kelas yang berasal dari jenis modul yang benar. Jika atribut diterapkan ke kelas, atribut menambahkan kelas dasar dari jenis modul yang benar. Jenis yang benar ditentukan oleh nilai parameter jenis :

Contoh

Kode berikut menunjukkan cara membuat blok pustaka dalam file .idl yang dihasilkan.

// cpp_attr_ref_module1.cpp
// compile with: /LD
[module(name="MyLibrary", version="1.2", helpfile="MyHelpFile")];

Kode berikut menunjukkan bahwa Anda dapat memberikan implementasi fungsi Anda sendiri yang akan muncul dalam kode yang disuntikkan sebagai akibat dari penggunaan modul. Lihat /Fx untuk informasi selengkapnya tentang melihat kode yang disuntikkan. Untuk mengambil alih salah satu fungsi yang dimasukkan oleh atribut modul, buat kelas yang akan berisi implementasi fungsi Anda dan buat atribut modul berlaku untuk kelas tersebut.

// cpp_attr_ref_module2.cpp
// compile with: /LD /link /OPT:NOREF
#include <atlbase.h>
#include <atlcom.h>
#include <atlwin.h>
#include <atltypes.h>
#include <atlctl.h>
#include <atlhost.h>
#include <atlplus.h>

// no semicolon after attribute block
[module(dll, name="MyLibrary", version="1.2", helpfile="MyHelpFile")]
// module attribute now applies to this class
class CMyClass {
public:
BOOL WINAPI DllMain(DWORD dwReason, LPVOID lpReserved) {
   // add your own code here
   return __super::DllMain(dwReason, lpReserved);
   }
};

Persyaratan

Konteks atribut Value
Berlaku untuk Manapun
Berulang Tidak
Atribut yang diperlukan Tidak ada
Atribut tidak valid Tidak ada

Untuk informasi selengkapnya, lihat Konteks Atribut.

Baca juga

Atribut IDL
Atribut Kelas
Atribut Mandiri
Atribut Typedef, Enum, Union, dan Struct
usesgetlasterror
Perpustakaan
helpcontext
helpstring
helpfile
versi