Condividi tramite


modulo (C++)

Definisce il blocco di libreria nel file IDL.

Sintassi

[ 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,) ];

Parametri

type
(Facoltativo) Può essere uno dei seguenti:

  • dll Aggiunge funzioni e classi che consentono alla DLL risultante di funzionare come server COM in-process. Questo è il valore predefinito.

  • exe Aggiunge funzioni e classi che consentono al file eseguibile risultante di funzionare come server COM out-of-process.

  • service Aggiunge funzioni e classi che consentono al file eseguibile risultante di funzionare come servizio NT.

  • unspecified Disabilita l'inserimento del codice ATL correlato all'attributo module: l'inserimento della classe ATL Module, le funzioni del _AtlModule dell'istanza globale e del punto di ingresso. Non disabilita l'inserimento di codice ATL a causa di altri attributi del progetto.

name
(Facoltativo) Nome del blocco di libreria.

version
(Facoltativo) Numero di versione da assegnare al blocco di libreria. Il valore predefinito è 1,0.

uuid
L'ID univoco per la libreria. Se si omette questo parametro, viene generato automaticamente un ID per la libreria. Potrebbe essere necessario recuperare il uuid del blocco di libreria ed è possibile farlo mediante l'identificatore __uuidof(nomelibreria).

lcid
Il parametro di localizzazione. Per altre informazioni, vedere lcid .

control
(Facoltativo) Specifica che tutte le coclassi nella libreria sono controlli.

helpstring
Specifica la libreria dei tipi.

helpstringdll
(Facoltativo) Imposta il nome del file DLL da utilizzare per eseguire una ricerca di stringhe di documento. Per altre informazioni, vedere helpstringdll .

helpfile
(Facoltativo) Nome del file della Guida per la libreria dei tipi.

helpcontext
(Facoltativo) ID della Guida per questa libreria dei tipi.

helpstringcontext
(Facoltativo) Per altre informazioni, vedere helpstringcontext .

hidden
(Facoltativo) Impedisce la visualizzazione dell'intera libreria. Questo utilizzo è pensato per i controlli. Gli host devono creare una nuova libreria dei tipi che esegue il wrapping del controllo con le proprietà estese. Per altre informazioni, vedere l'attributo MIDL hidden .

restricted
(Facoltativo) I membri della libreria non possono essere chiamati arbitrariamente. Per altre informazioni, vedere l'attributo MIDL restricted .

custom
(Facoltativo) Uno o più attributi; è simile all'attributo personalizzato . Il primo parametro da personalizzare è il GUID dell'attributo. Ad esempio:

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

resource_name
L'ID di risorsa stringa del file RGS utilizzato per registrare l'ID di APP della DLL, dell'eseguibile o del servizio. Quando il modulo è di tipo servizio, questo argomento viene usato anche per ottenere l'ID della stringa contenente il nome del servizio.

Nota

Sia il file RGS che la stringa contenente il nome del servizio devono contenere lo stesso valore numerico.

Osservazioni:

Se non si imposta il parametro restricted su emitidl, module è obbligatorio in qualsiasi programma che usa gli attributi di C++.

Verrà creato un blocco di libreria se, oltre all'attributo module , il codice sorgente usa anche dispinterface, dual, objecto un attributo che implica coclass.

In un file IDL è consentito un solo blocco di libreria. Più voci di modulo nel codice sorgente vengono unite e vengono implementati i valori dei parametri più recenti.

Se questo attributo viene usato in un progetto che usa ATL, il comportamento dell'attributo cambia. Oltre al comportamento precedente, l'attributo inserisce anche un oggetto globale (denominato _AtlModule) del tipo corretto e codice di supporto aggiuntivo. Se l'attributo è autonomo, inserisce una classe derivata dal tipo di modulo corretto. Se l'attributo è applicato a una classe, aggiunge una classe base del tipo di modulo corretto. Il tipo corretto è determinato dal valore del parametro di tipo :

Esempio

Il codice seguente illustra come creare un blocco di libreria nel file IDL generato.

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

Il codice seguente mostra che è possibile fornire la propria implementazione di una funzione che verrà visualizzata nel codice inserito in seguito all'utilizzo di module. Per altre informazioni sulla visualizzazione del codice inserito, vedere /Fx . Per eseguire l'override di una delle funzioni inserite dall'attributo modulo , creare una classe che conterrà l'implementazione della funzione e fare in modo che l'attributo module sia applicato a tale classe.

// 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);
   }
};

Requisiti

Contesto attributo valore
Si applica a Ovunque
Ripetibile No
Attributi obbligatori None
Attributi non validi None

Per altre informazioni, vedere Contesti di attributi.

Vedi anche

Attributi IDL
Attributi di classe
Attributi autonomi
Attributi Typedef, Enum, Union e Struct
usesgetlasterror
libreria
helpcontext
helpstring
helpfile
version