インポート ライブラリとエクスポート ファイルのビルド
インポート ライブラリとエクスポート ファイルをビルドするには、次の構文を使用します。
LIB /DEF[:deffile] [options] [objfiles] [libraries]
/DEF を指定すると、LIB コマンドで渡したエクスポートの指定に基づいて、出力ファイルが作成されます。エクスポートを指定するには、次の 3 とおりの方法 (推奨順) があります。
objfiles または libraries で、__declspec(dllexport) を定義する。
LIB のコマンド ラインで、/EXPORT:name を指定する。
deffile で、EXPORTS 文形式で定義する。
これらの方法は、エクスポートするプログラムをリンクするときのエクスポートの指定方法と同じです。1 つのプログラムで複数の方法を使用できます。LIB コマンドでも LINK コマンドと同じように、コマンドの一部 (複数の objfiles や /EXPORT 指定など) をコマンド ファイルで指定できます。
以下は、インポート ライブラリとエクスポート ファイルをビルドするオプションです。
/OUT:import
作成するインポート ライブラリの既定の出力ファイル名を変更します。/OUT を指定しないと、既定の出力ファイル名は、LIB コマンドで最初に指定したオブジェクト ファイルまたはライブラリの基本名に拡張子 .lib が付いたものになります。エクスポート ファイル名は、インポート ライブラリの基本名に拡張子 .exp が付いたものになります。/EXPORT:entryname[=internalname][,@ordinal\[,NONAME]][,DATA]
プログラムから特定の関数をエクスポートし、ほかのプログラムからそれを呼び出せるようにします。DATA キーワードを使うと、データもエクスポートできます。通常、エクスポートは DLL ファイルで定義されています。entryname は、呼び出し側のプログラムが使用する関数またはデータ項目の名前です。引数 internalname に、エクスポート側のプログラム内で認識される関数名を指定することもできます。既定では、internalname は entryname と同じ名前になります。引数 ordinal には、エクスポート テーブルのインデックスとして 1 ~ 65,535 の値を指定します。ordinal でインデックスを指定しないと、LIB によって自動的に割り当てられます。NONAME キーワードを指定すると、entryname を使用せずに、指定されたインデックスだけで関数がエクスポートされます。DATA キーワードを使用すると、データだけのオブジェクトをエクスポートできます。
/INCLUDE:symbol
指定されたシンボルをシンボル テーブルに追加します。このオプションは、通常は取り込まれないライブラリ オブジェクトを追加する場合に使用します。
.dll をビルドする前の予備ステップでインポート ライブラリを作成する場合は、.dll をビルドするときに、インポート ライブラリのビルド時に渡したものと同じオブジェクト ファイル セットを渡す必要があることに注意してください。