Импорт файлов и библиотек типов
Ключевые слова MIDL включают, import и importlib позволяют повторно использовать код, ссылаясь на существующие файлы заголовков, IDL и ODL, а также скомпилированные библиотеки типов.
Директива включения ACF позволяет указать в ACF-файле один или несколько файлов заголовков языка C, которые будут включены в код заглушки, сгенерированный MIDL. Созданный файл будет содержать строку с #include директивой C-препроцессора с указанным файлом заголовка. Используйте эту директиву include для создания файлов заголовков, относящихся к определенной операционной среде и не содержащих сведений, необходимых для интерфейса между клиентом и сервером. Не используйте параметр include для файлов заголовков, содержащих типы данных, которые должны быть доступны для IDL-файла; Вместо этого используйте директиву import .
Пример 1
[
auto_handle
]
interface X86PC
{
include "gendefs.h", "protos.h", "myfile.h";
//interface typdefs and function declarations here
}
Директива импорта IDL — это стандартный метод для переноса определений типов и интерфейсов из других файлов IDL (или ODL) и файлов заголовков в IDL-файл. Все операторы IDL в импортированном файле, такие как typedefs, объявления const и определения интерфейса, становятся доступными для импортируемого IDL-файла.
Как и директива препроцессора языка C #include, директива import указывает компилятору включить типы данных, определенные в импортированных IDL-файлах. В отличие от директивы #include , директива import игнорирует прототипы процедур, так как заглушки не создаются для чего-либо в импортированном файле. Так как препроцессор вызывается отдельно для импортированного файла, директивы препроцессора (например, **) не переносятся в импортируемый IDL-файл.
Дополнительные сведения об использовании импорта для включения системных файлов заголовков в IDL-файл см. в разделе Импорт файлов заголовков системы.
Пример 2
[
uuid(. . .), object
]
interface IKnown : IUnknown
{
import "base.idl", "unknwn.idl", "helper.idl";
//remainder of interface definition
}
Директива ODL importlib позволяет ссылаются на скомпилированную библиотеку типов в IDL-файле или ODL-файле. Директива importlib должна находиться внутри инструкции библиотеки и должна предшествовать другим описаниям типов в библиотеке. Импортированная библиотека, а также созданная библиотека должны быть доступны приложению во время выполнения.
Пример 3
library NewBrowser
{
importlib("stdole32.tlb");
importlib("legacy.tlb");
//remainder of library definition
};
Вы также можете использовать директиву C-preprocessor #include для включения заголовков и других файлов в IDL-файл или ODL-файл. Однако имейте в виду, что эта директива будет буквально включать все содержимое указанного файла. Если файл заголовка содержит прототипы, которые вам не нужны в файлах-заглушках, созданных midl, или если он содержит определения типов, не поддающиеся перемещению, вместо директивы #include следует использовать директиву импорта MIDL.
Связанные темы