Share via


module (C++)

Définit le bloc de bibliothèque dans le fichier .idl.

Syntaxe

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

Paramètres

type
(Facultatif) Il peut s’agir de l’un des éléments suivants :

  • dll Ajoute des fonctions et des classes qui permettent à la DLL résultante de fonctionner en tant que serveur COM in-process. Il s’agit de la valeur par défaut.

  • exe Ajoute des fonctions et des classes qui permettent à l’exécutable résultant de fonctionner en tant que serveur COM hors processus.

  • service Ajoute des fonctions et des classes qui permettent à l’exécutable résultant de fonctionner en tant que service NT.

  • unspecified Désactive l’injection de code ATL liée à l’attribut de module : injection de classe module ATL, instance globale _AtlModule et fonctions de point d’entrée. Ne désactive pas l’injection de code ATL due à d’autres attributs dans le projet.

name
(Facultatif) Nom du bloc de bibliothèque.

version
(Facultatif) Numéro de version que vous souhaitez affecter au bloc de bibliothèque. La valeur par défaut est 1,0.

uuid
ID unique de la bibliothèque. Si vous omettez ce paramètre, un ID est généré automatiquement pour la bibliothèque. Vous devrez peut-être récupérer l’ uuid de votre bloc de bibliothèque, ce que vous pouvez faire à l’aide de l’identificateur __uuidof(nom_bibliothèque).

lcid
Paramètre de localisation. Pour plus d’informations, consultez lcid .

control
(Facultatif) Spécifie que toutes les coclasses de la bibliothèque sont des contrôles.

helpstring
Spécifie la bibliothèque de types.

helpstringdll
(Facultatif) Définit le nom du fichier .dll à utiliser pour effectuer une recherche de chaîne de document. Pour plus d’informations, consultez helpstringdll .

helpfile
(Facultatif) Nom du fichier d’aide de la bibliothèque de types.

helpcontext
(Facultatif) ID d’aide de cette bibliothèque de types.

helpstringcontext
(Facultatif) Pour plus d’informations, consultez helpstringcontext .

hidden
(Facultatif) Empêche l’affichage de l’intégralité de la bibliothèque. Cette utilisation est destinée aux contrôles. Les hôtes doivent créer une bibliothèque de types qui encapsule le contrôle avec des propriétés étendues. Pour plus d’informations, consultez l’attribut MIDL hidden .

restricted
(Facultatif) Les membres de la bibliothèque ne peuvent pas être appelés arbitrairement. Pour plus d’informations, consultez l’attribut MIDL restricted .

custom
(Facultatif) Un ou plusieurs attributs ; ceci est similaire à l’attribut personnalisé . Le premier paramètre à personnaliser est le GUID de l’attribut. Par exemple :

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

resource_name
ID de ressource de chaîne du fichier .rgs utilisé pour enregistrer l’ID d’application de la DLL, de l’exécutable ou du service. Quand le module est de type service, cet argument sert également à obtenir l’ID de la chaîne contenant le nom du service.

Remarque

Le fichier .rgs et la chaîne contenant le nom du service doivent tous deux contenir la même valeur numérique.

Notes

module est obligatoire dans tout programme qui utilise des attributs C++, sauf si vous spécifiez le paramètre restrictedpour emitidl .

Un bloc de bibliothèque est créé si, en plus de l’attribut module , le code source utilise également dispinterface, double, objectou un attribut qui implique coclass.

Un seul bloc de bibliothèque est autorisé dans un fichier .idl. Les entrées de module multiples dans le code source sont fusionnées, les valeurs de paramètres les plus récentes étant implémentées.

Si vous utilisez cet attribut dans un projet qui utilise ATL, le comportement de l’attribut change. Outre le comportement ci-dessus, l’attribut insère également un objet global (appelé _AtlModule) du type correct et du code de prise en charge supplémentaire. Si l’attribut est autonome, il insère une classe dérivée du type de module approprié. Si l’attribut est appliqué à une classe, il ajoute une classe de base du type de module approprié. Le type correct est déterminé par la valeur du paramètre de type :

Exemple

Le code suivant montre comment créer un bloc de bibliothèque dans le fichier .idl généré.

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

Le code suivant montre que vous pouvez fournir votre propre implémentation d’une fonction qui s’affiche dans le code injecté suite à l’utilisation de module. Pour plus d’informations sur l’affichage de code injecté, consultez /Fx . Pour substituer l’une des fonctions insérées par l’attribut module , créez une classe qui contiendra votre implémentation de la fonction et faites en sorte que l’attribut module s’applique à cette 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);
   }
};

Spécifications

Contexte d’attribut Valeur
S’applique à N’importe où
Renouvelable Non
Attributs requis Aucun
Attributs non valides Aucun

Pour plus d'informations, consultez Contextes d'attribut.

Voir aussi

Attributs IDL
Attributs de classe
Attributs autonomes
Attributs Typedef, Enum, Union et Struct
usesgetlasterror
bibliothèque
helpcontext
helpstring
helpfile
version