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


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

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

Импорт

importlib

Включают

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