Поделиться через


Импорт файлов и библиотек типов

Ключевые слова 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.

импорт

importlib

включить

импорт системных заголовочных файлов