Importation de fichiers d’en-tête système
Bien qu’il soit souvent possible d’utiliser la directive #include pour inclure des fichiers d’en-tête dans votre fichier IDL, il n’est pas recommandé. Le compilateur MIDL génère des stubs pour toutes les fonctions définies dans le fichier IDL en cours de compilation. En règle générale, un fichier d’en-tête contient un certain nombre de prototypes que vous n’avez pas besoin d’inclure dans vos fichiers stub, et un #include place efficacement toutes ces définitions dans votre fichier IDL main. En outre, s’il existe des types non amovibles définis dans le fichier d’en-tête, le fichier IDL peut ne pas être compilé.
Il existe deux façons d’inclure des définitions de type à partir de fichiers d’en-tête dans un fichier IDL :
- Utilisez la directive import pour inclure les types de données définis dans un fichier d’en-tête. Contrairement à la directive #include en langage C, la directive d’importation récupère uniquement les définitions de type et de constante et ignore les prototypes de procédure. Cette approche fonctionne tant que votre fichier IDL main ne fait référence à aucun type non modifiable défini dans le fichier d’en-tête.
- Créez un fichier IDL d’assistance avec une interface factice qui inclut les fichiers d’en-tête. Ensuite, utilisez la directive import pour inclure le fichier d’assistance. De cette façon, seuls les types typedefs’affichent dans les stubs compilés. Par exemple :
//in helper.idl:
interface dummy
{
#include "kitchensink.h"
#include "system.h"
}
//in main.idl:
import "helper.idl";