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