初めて DLL を作成するときには,「プロジェクトの定義」に説明している一般的な操作を実行します。Microsoft ビジュアル開発環境で新しいプロジェクトを作成するときには,プロジェクト・タイプとして Fortran Dynamic-Link Library を選択します。
DLL をデバッグするには,ライブラリー・ルーチンを呼び出す (またはデータを参照する) 主プログラムを使用する必要があります。「Project Settings」ダイアログボックスの「Debug」タブを選択します。このダイアログボックスでは,デバッグのための実行形式ファイルを指定することができます。
Microsoft ビジュアル開発環境から DLL をビルドする方法
通常のプロジェクトと同じような Fortran DLL プロジェクトが作成されますが,プロジェクト・タイプとしては Fortran Dynamic-Link Library を指定する必要があります (「プロジェクトの定義」を参照)。
ファイルを Fortran DLL プロジェクトに追加します (「プロジェクトの定義」を参照)。手続やデータをエクスポートする DLL Fortran ソースを,プロジェクトのファイルとして追加します。
DLL がデータをエクスポートする場合,DLL と,DLL がエクスポートするデータを参照するすべての実行形式ファイルで,「Fortran Data」カテゴリのプロジェクト設定オプションに一貫性を持たせるようにします。「Fortran」タブの「Fortran Data」カテゴリで,「Common Element Alignment」と「Structure Element Alignment」に対して適切な値を指定します。これにより,エクスポートされるデータ項目が自然に位置合わせされるようにするための充填が必要かどうかを指定する /alignment オプションが設定されます。
たとえば,4 バイトの変数を含んでいる共通ブロックでは,「Project Settings」ダイアログボックスで次のように指定します。
適切なワークスペースを開きます。
「Project」メニューの「Settings」をクリックして,「Project Settings」ダイアログボックスを表示します。
「Fortran」タブをクリックします。
「Fortran Data」カテゴリを選択します。
「Common Element Alignment」ボックスで 4 と指定します。
リンカー・オプションを指定する必要がある場合,「Project Settings」ダイアログボックスの「Link」タブを使用します。
Fortran DLL プロジェクトをビルドします。
Microsoft ビジュアル開発環境は,正しい実行時ライブラリー・ルーチン (DLL そのものに含まれています) をロードするための正しいリンカー命令を自動的に選択します。DLL はマルチスレッド対応のライブラリーとして作成されます。また,DLL を参照する実行形式ファイルをリンクするときのために,インポート・ライブラリー (.LIB) が作成されます。
コマンド行から DLL をビルドする方法
DF /dll f90arr.f90
このコマンドは次のものを作成します。
f90arr.dll という名前の DLL
DLL を呼び出すアプリケーションにリンクしなければならないインポート・ライブラリー f90arr.lib
さらに /exe:file または /link /out:file を指定すると,.EXE ファイルではなく .DLL の名前を指定することができます。この場合,基本ファイル拡張子は projectname.EXE ではなく projectname.DLL になります。
/dll オプションは,基本設定ではマルチスレッド操作をサポートする DLL 実行時ライブラリーを選択します。
DLL がデータをエクスポートする場合,手続のコンパイルとリンクを一貫性のある形で行う必要があります。DLL エクスポート手続と,それを参照 (インポート) するアプリケーションで,/alignment オプションに一貫性を持たせます。ゴールは,共通ブロック・データ項目と構造体要素の位置合わせ (モジュール内の構造体) を含む,エクスポートしたデータ項目が自然に位置合わせされるようにするための充填を指定することです。
リンカー・オプションを指定する必要がある場合,DF コマンド行の /link オプションの後に置きます。
アプリケーションをビルドします。
たとえば,DLL が 4 バイトの変数を含んでいる共通ブロックをエクスポートする場合,次のコマンド行を使用します (/dll オプションを指定します)。
DF /align:commons /dll dllfile.for
/dll オプションは,適切な実行時ライブラリー・ルーチンをロードするための正しいリンカー命令を自動的に選択します (DLL そのものに含まれています)。DLL はマルチスレッド対応ライブラリーとして作成されます。
関連情報