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


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

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