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

Хотя часто можно использовать директиву #include для включения файлов заголовков в IDL-файл, это не рекомендуется. Компилятор MIDL создаст заглушки для всех функций, определенных в скомпилированном IDL-файле. Обычно файл заголовка содержит несколько прототипов, которые не нужно включать в файлы заглушки, а #include эффективно помещает все эти определения в файл IDL main. Кроме того, если в файле заголовка определены неизменяемые типы, IDL-файл может не компилироваться.

Существует два способа включения определений типов из файлов заголовков в IDL-файл:

  • Используйте директиву import для включения типов данных, определенных в файле заголовка. В отличие от директивы #include языка C, директива import выбирает только определения типов и констант и игнорирует прототипы процедур. Этот подход будет работать до тех пор, пока main IDL-файл не ссылается на неотменяемые типы, определенные в файле заголовка.
  • Создайте вспомогательный IDL-файл с фиктивным интерфейсом, который включает файлы заголовков. Затем используйте директиву import , чтобы включить вспомогательный файл. Таким образом, в скомпилированных заглушках будут отображаться только определения типа. Пример:
//in helper.idl:
interface dummy
{ 
   #include "kitchensink.h"
   #include "system.h"
}

//in main.idl:
import "helper.idl";