ファイルとタイプ ライブラリのインポート
MIDL キーワードには、既存のヘッダー、IDL、オブジェクト定義言語 (ODL) ファイル、およびコンパイル済みタイプ ライブラリを参照することで、コードを再利用できます。
ACF インクルード ディレクティブを使用すると、MIDL で生成されたスタブ コードに含める 1 つ以上の C 言語ヘッダー ファイルを ACF ファイルで指定できます。 生成されたファイルには、指定されたヘッダー ファイルを含む #include C プリプロセッサ ディレクティブを含む行があります。 この インクルード ディレクティブを使用して、特定のオペレーティング環境に固有のヘッダー ファイルを取り込み、クライアントとサーバー間のインターフェイスに必要な情報を含まないファイルを取り込みます。 IDL ファイルで使用できるデータ型を含むヘッダー ファイルには include を使用しないでください。代わりに、 import ディレクティブを使用します。
例 1
[
auto_handle
]
interface X86PC
{
include "gendefs.h", "protos.h", "myfile.h";
//interface typdefs and function declarations here
}
IDL インポート ディレクティブは、他の IDL (または ODL) ファイルとヘッダー ファイルから IDL ファイルに型とインターフェイスの定義を取り込むための標準的な方法です。 typedef、 const 宣言、インターフェイス定義など、インポートされたファイル内のすべての IDL ステートメントが、インポートする IDL ファイルで使用できるようになります。
C 言語プリプロセッサ ディレクティブ #includeと同様に、インポート ディレクティブは、 インポート された IDL ファイルで定義されたデータ型を含むようにコンパイラに指示します。 #include ディレクティブとは異なり、インポートディレクティブはプロシージャプロトタイプを無視します。インポートされたファイル内のスタブは生成されません。 プリプロセッサはインポートされたファイルに対して個別に呼び出されるため、プリプロセッサ ディレクティブ (**など) はインポートする IDL ファイルに引き継がれません。
インポートを使用して IDL ファイルにシステム ヘッダー ファイルを含める方法の詳細については、「システム ヘッダー ファイルのインポート」を参照してください。
例 2
[
uuid(. . .), object
]
interface IKnown : IUnknown
{
import "base.idl", "unknwn.idl", "helper.idl";
//remainder of interface definition
}
ODL importlib ディレクティブを使用すると、IDL または ODL ファイル内のコンパイル済みタイプ ライブラリを参照できます。 importlib ディレクティブは、ライブラリ ステートメント内にあり、ライブラリ内の他の型の説明の前に置く必要があります。 インポートされたライブラリと生成されたライブラリは、実行時にアプリケーションで使用できる必要があります。
例 3
library NewBrowser
{
importlib("stdole32.tlb");
importlib("legacy.tlb");
//remainder of library definition
};
また、C プリプロセッサ #include ディレクティブを使用して、IDL または ODL ファイルにヘッダーやその他のファイルを含めることもできます。 ただし、このディレクティブには、指定されたファイルの内容全体がリテラルで含まれることに注意してください。 ヘッダー ファイルに必要のないプロトタイプが MIDL で生成されたスタブ ファイルに含まれている場合、または削除できない型定義が含まれている場合は、#include ディレクティブの代わりに MIDL インポート ディレクティブを使用する必要があります。
関連トピック