構文:
/EXPORT:entryname[=internalname][, @ordinal [, NONAME]] [, DATA]
プログラムから関数をエクスポートして,他のプログラムからその関数を呼び出せるようにします。また,データをエクスポートすることもできます。通常,エクスポートは DLL 中に定義されます。
entryname は,呼び出し側のプログラムが使用する関数またはデータ項目名です。関数を定義しているプログラム中で使用される internalname (省略可能) を指定することもできます。基本設定では,internalname は entryname と同じです。ordinal は,エクスポート表中の索引を指定する 1 ~ 65535 の範囲の値です。ordinal を指定しなければ,LINK が値を割り付けます。NONAME キーワードは,関数を entryname なしで,索引のみを使ってエクスポートします。
DATA キーワードは,エクスポートされる項目がデータ項目であることを指定します。クライアント・プログラム中では,データ項目は cDEC$ ATTRIBUTES DLLIMPORT を使って宣言されていなくてはなりません。CONSTANT キーワードは互換性のためにサポートはされていますが,使用しないほうが無難です。
定義をエクスポートする方法は 3 つあります。次に,これらの方法を推奨される順番に示します。
ソース・コード中の cDEC$ ATTRIBUTES DLLEXPORT コンパイラ指示文
LINK コマンドでの /EXPORT 指定
モジュール定義 (.DEF) ファイル中の EXPORTS 文
1 つのプログラムで 3 つの方法を組み合わせて使うことができます。LINK は,エクスポートを含んでいるプログラムをビルドするときに,そのビルドで .EXP ファイルが使用されていない限り,インポート・ライブラリーも作成します。
LINK は,識別子の修飾した形式を使用します。修飾した名前とは,手続名または変数名が宣言されている場所に関する情報を含んでいるこれらの名前の内部的な表現です。手続の場合,この情報にはその呼び出し方法も含まれています。修飾した名前は,主に言語が混在したプログラミングにおいて,Fortran ルーチンを他の言語から呼び出すときに重要となります。
コンパイラは,オブジェクト・ファイルを作成するときに,識別子を修飾します。リンカーに対して,ソース・コード内の修飾していない形式で entryname または internalname が指定された場合,LINK は名前の一致を試みます。一意に一致するものを発見できなかった場合,LINK はエラーを発行します。
リンカーに指定するために,修飾した形式の識別子を知る必要がある場合,「DUMPBIN によるファイルの確認」で説明している DUMPBIN ツールを使用します。cDEC$ ATTRIBUTES C または STDCALL で宣言された,識別子の修飾した形式は指定しないでください。
修飾した名前をいつどのように使用するかという情報については,「言語が混在したプログラミングにおける名付け規約の調整」を参照してください。