Импорт системных файлов заголовков
Хотя часто можно использовать директиву #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";