システム ヘッダー ファイルのインポート

多くの場合、 #include ディレクティブを使用して IDL ファイルにヘッダー ファイルを含めることができますが、推奨されません。 MIDL コンパイラは、コンパイルされる IDL ファイルで定義されているすべての関数のスタブを生成します。 通常、ヘッダー ファイルには、スタブ ファイルに含める必要も含める必要もないプロトタイプが多数含まれており、 #include は、これらの定義をすべてメイン IDL ファイルに効果的に配置します。 さらに、ヘッダー ファイルで定義されている非削除可能な型がある場合は、IDL ファイルがコンパイルされない可能性があります。

IDL ファイルにヘッダー ファイルの型定義を含めるには、次の 2 つの方法があります。

  • import ディレクティブを使用して、ヘッダー ファイルに定義されているデータ型を含めます。 C 言語 の #include ディレクティブとは異なり、 import ディレクティブは型と定数の定義のみを選択し、プロシージャプロトタイプを無視します。 この方法は、メイン IDL ファイルがヘッダー ファイルで定義されている削除不可能な型を参照しない限り機能します。
  • ヘッダー ファイルを含むダミー インターフェイスを持つヘルパー IDL ファイルを作成します。 次に、 import ディレクティブを使用してヘルパー ファイルを含めます。 このようにして、コンパイルされたスタブには typedef のみが表示されます。 次に例を示します。
//in helper.idl:
interface dummy
{ 
   #include "kitchensink.h"
   #include "system.h"
}

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