Importation de fichiers et de bibliothèques de types

Les mots clés MIDL incluent, importez et importlib vous permettent de réutiliser du code en référençant des fichiers ODL (Object Definition Language) existants et des bibliothèques de types compilées.

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

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’apporter des définitions de type et d’interface à partir d’autres fichiers IDL (ou ODL) et de fichiers d’en-tête dans votre fichier IDL. Toutes les instructions IDL du fichier importé, telles que typedefs, déclarations const et définitions d’interface, sont disponibles pour le fichier IDL d’importation.

Comme la directive de préprocesseur du langage C #include, la directive d’importation indique au compilateur d’inclure des types de données 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 n’importe quoi 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 passent pas au 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 ODL importlib 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, doit être disponible 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-preprocesseur #include pour inclure des en-têtes et d’autres fichiers dans votre fichier IDL ou ODL. Sachez 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 souhaitez dans les fichiers stub générés par MIDL ou s’il contient des définitions de type non distantes, 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