インポート ライブラリとエクスポート ファイルのビルド
インポート ライブラリとエクスポート ファイルをビルドするには、次の構文を使います。
LIB /DEF[:<定義ファイル>] [<オプション>] [<オブジェクト ファイル>] [<ライブラリ>]
/DEF を指定すると、LIB では、LIB コマンドに渡されたエクスポートの指定から出力ファイルが作成されます。 エクスポートを指定する方法には次の 3 つがあり、使用が推奨される順に示します。
<オブジェクト ファイル>、<ライブラリ> のいずれかの
__declspec(dllexport)
定義LIB コマンド ラインでの /EXPORT:<名前> の指定
<定義ファイル> 内の EXPORTS ステートメント内の定義
これらは、エクスポート プログラムをリンクするときにエクスポートの指定に使用する、同じ方法です。 プログラムでは、複数のメソッドを使用できます。 LINK コマンドの場合と同様に、LIB コマンドのコマンド ファイルで、LIB コマンドの一部 (複数の <オブジェクト ファイル> や /EXPORT 指定など) を指定できます。
インポート ライブラリとエクスポート ファイルのビルドには、次のオプションが適用されます。
/OUT: import
作成する <インポート> ライブラリの既定の出力ファイル名をオーバーライドします。 /OUT を指定しない場合、既定の名前は、LIB コマンド内で最初のオブジェクト ファイルまたはライブラリのベース名と、拡張子 .lib になります。 エクスポート ファイルにはインポート ライブラリと同じベース名が付けられ、拡張子は .exp になります。
/EXPORT: entryname[= internalname][,@ordinal[, NONAME]][, DATA]
プログラムから関数をエクスポートして、他のプログラムからその関数を呼び出せるようにします。 (DATA キーワードを使って) データをエクスポートすることもできます。 通常、エクスポートは DLL で定義されます。
<エントリ名> は、呼び出し元のプログラムによって使用される、関数またはデータ項目の名前です。 必要に応じて、定義プログラム内で既知の関数として <内部名> を指定できます。既定では、<内部名> は <エントリ名> と同じです。 <序数> を使うと、1 から 65,535 の範囲でエクスポート テーブルへのインデックスを指定できます。<序数> を指定しない場合は、LIB によって割り当てられます。 NONAME キーワードを使用すると、関数はただ序数として、<エントリ名> なしでエクスポートされます。 DATA キーワードを使うと、データのみのオブジェクトをエクスポートできます。
/INCLUDE: symbol
指定した <シンボル> をシンボル テーブルに追加します。 このオプションは、そうしなければインクルードされないライブラリ オブジェクトの使用を強制する場合に便利です。
準備手順でインポート ライブラリを作成する場合は、.dll を作成する前に、インポート ライブラリをビルドするときに渡したのと同じオブジェクト ファイルのセットを、.dll をビルドするときに渡す必要があることに注意してください。