Importation de fichiers et de bibliothèques de types

Les mots clés MIDL incluent, import et importlib vous permettent de réutiliser le code en référençant les fichiers ODL (En-tête, IDL et ODL) existants, ainsi que les bibliothèques de types compilées.

La directive include ACF vous permet de spécifier dans un fichier ACF un ou plusieurs fichiers d’en-tête en langage C à inclure dans le code stub généré par MIDL. Le fichier généré aura une ligne avec une directive #include C-preprocessor avec le fichier d’en-tête indiqué. Utilisez cette directive include pour importer des fichiers d’en-tête spécifiques à un environnement d’exploitation particulier et qui ne contiennent pas les informations nécessaires à l’interface entre le client et le serveur. N’utilisez pas include pour les fichiers d’en-tête contenant les types de données que vous souhaitez mettre à la disposition du fichier IDL ; à la place, utilisez la directive import .

Exemple 1

[
  auto_handle
] 
interface X86PC
{ 
  include "gendefs.h", "protos.h", "myfile.h"; 
  //interface typdefs and function declarations here
}

La directive d’importation IDL est la méthode standard permettant d’importer des définitions de type et d’interface à partir d’autres fichiers IDL (ou ODL) et fichiers d’en-tête dans votre fichier IDL. Toutes les instructions IDL dans le fichier importé, telles que les typesdefs, les déclarations const et les définitions d’interface, deviennent disponibles pour le fichier IDL qui importe.

Comme la directive de préprocesseur en langage C #include, la directive import indique au compilateur d’inclure les types de données qui ont été définis dans les fichiers IDL importés. Contrairement à la directive #include , la directive d’importation ignore les prototypes de procédure, car aucun stub n’est généré pour quoi que ce soit dans le fichier importé. Étant donné que le préprocesseur est appelé séparément pour le fichier importé, les directives de préprocesseur (telles que **) ne sont pas reportées vers le fichier IDL d’importation.

Pour plus d’informations sur l’utilisation de l’importation pour inclure des fichiers d’en-tête système dans un fichier IDL, consultez Importation de fichiers d’en-tête système.

Exemple 2

[
  uuid(. . .), object
] 
interface IKnown : IUnknown
{
  import "base.idl", "unknwn.idl", "helper.idl";
  //remainder of interface definition
}

La directive importlib ODL vous permet de référencer une bibliothèque de types compilée dans votre fichier IDL ou ODL. La directive importlib doit se trouver à l’intérieur d’une instruction de bibliothèque et doit précéder d’autres descriptions de type dans la bibliothèque. La bibliothèque importée, ainsi que la bibliothèque générée, doivent être disponibles pour l’application au moment de l’exécution.

Exemple 3

library NewBrowser
{
  importlib("stdole32.tlb");
  importlib("legacy.tlb");
  //remainder of library definition
};

Vous pouvez également utiliser la directive C-preprocessor #include pour inclure des en-têtes et d’autres fichiers dans votre fichier IDL ou ODL. N’oubliez pas, toutefois, que cette directive inclut littéralement l’intégralité du contenu du fichier spécifié. Si un fichier d’en-tête contient des prototypes dont vous n’avez pas besoin ou que vous ne souhaitez pas dans les fichiers stub générés par MIDL, ou s’il contient des définitions de type non modifiables, vous devez utiliser la directive d’importation MIDL au lieu de la directive #include .

Importation

importlib

Inclure

Importation de fichiers d’en-tête système