Импорт файлов и библиотек типов
Ключевые слова MIDL включают, импорти importlib, которые позволяют повторно использовать код, ссылаясь на существующие заголовочные файлы, файлы IDL и язык определения объектов (ODL), а также скомпилированные библиотеки типов.
ACF включает директиву, которая позволяет указать в файле ACF один или несколько файлов заголовков языка C, которые будут включены в созданный MIDL код заглушки. Созданный файл будет иметь строку с директивой #include C-preprocessor с указанным файлом заголовка. Используйте директиву 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, директива импорта сообщает компилятору включить типы данных, определенные в импортированных IDL-файлах. В отличие от директивы #include, директива импорта игнорирует прототипы процедур, так как заглушки для импортированного файла не создаются. Так как препроцессор вызывается отдельно для импортированного файла, директивы препроцессора (такие как **) не переносятся в импортируемый 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-препроцессора #include для включения заголовков и других файлов в ваш IDL или ODL файл. Помните, что эта директива будет буквально включать все содержимое указанного файла. Если файл заголовка содержит прототипы, которые вам не нужны в файлах заглушки, созданных MIDL, или если он содержит определения типов, неподлежащих удалённому вызову, следует использовать директиву MIDL вместо директивы #include.
Связанные разделы