アプリケーションをビルドするため、Fortran と C の間の呼び出し、命名、および引数渡しの規則を理解します。Microsoft* Visual C++* またはインテル® C/C++ を使用している場合は、Microsoft* 統合開発環境内でコードの編集、コンパイル、デバッグを行うことができます。別の C コンパイラーを使用している場合は、その統合開発環境内でコードの編集を行うことができます。ただし、コードは統合開発環境の外でコンパイルし、Fortran/C プログラムをコマンドラインでビルドするか、コンパイル済みの C .OBJ ファイルを Microsoft* IDE の Fortran プロジェクトに追加する必要があります。
コマンドラインからのビルドの例として、FORSUBS.F90 に含まれている Fortran サブルーチンを呼び出す C のメインプログラム CMAIN.C がある場合、CMAIN アプリケーションを次のコマンドで作成することができます。
icl /c cmain.c ifort cmain.obj forsubs.f90
インテル® Visual Fortran は、C で記述され、C コンパイラーによりコンパイルされたメインプログラムのオブジェクト・ファイルを受け付けます。インテル® コンパイラーは .F90 ファイルをコンパイルし、リンカーが 2 つのオブジェクト・ファイルを使用して CMAIN.EXE という名前の実行ファイルを作成します。
メインプログラムの言語に関係なく、どちらのコンパイラー (C またはインテル® Visual Fortran) でもリンクできます。ただし、先にインテル® Visual Fortran コンパイラーを使用する場合、C コンパイラーで LIBIFCORE.LIB および IFCONSOL.LIB をインクルードしなければなりません。またこの際、C コンパイラーで使用されるランタイム・ライブラリーのバージョンによって何らかの問題が生じる可能性があります。先に C コンパイラーを使用するか、またはインテル® Visual Fortran および C プロジェクトの設定でアプリケーションがリンクする C ライブラリーを指定して、アプリケーションが 1 つの C ライブラリーだけにリンクするようにします。
IDE でインテル® Visual Fortran アプリケーションをビルドする場合、[プロジェクト] > [プロパティ] ([プロパティ ページ] ダイアログボックス) の [Fortran] カテゴリーで、使用する Fortran ライブラリーと C ライブラリーを指定できます。また、[プロパティ ページ] ダイアログボックスの [Linker] カテゴリーで、リンカー設定を指定することもできます。
[Fortran] > [Libraries] の [RunTime Library] の設定により、選択されるライブラリーが決定されます。
ランタイム・ライブラリー |
使用される Fortran リンク・ライブラリー |
使用される C リンク・ライブラリー |
---|---|---|
デバッグ用シングルスレッド |
libifcore.lib |
libcmtd.lib |
マルチスレッド |
libifcoremt.lib |
libcmt.lib |
デバッグ用マルチスレッド |
libifcoremt.lib |
libcmtd.lib |
デバッグ用シングルスレッド DLL |
libifcorertd.lib (libifcorertd.dll) |
msvcrt.lib (msvcrt.dll) |
マルチスレッド DLL |
libifcoremd.lib (libifcoremd.dll) |
msvcrt.lib (msvcrt.dll) |
デバッグ用マルチスレッド DLL |
libifcoremdd.lib (libifcoremdd.dll) |
msvcrt.lib (msvcrt.dll) |
例えば、DLL (/libs:DLL)、マルチスレッド (/threads)、デバッグ (/dbglibs) のライブラリー (Fortran インポート・ライブラリーの libifcoremdd.lib とその DLL の libifcoremdd.dll および C/C++ インポート・ライブラリーの msvcrtd.lib とその DLL の msvcrtd.dll) とリンクするには、[Run-time Library] リストでデバッグ用マルチスレッド DLL を選択します。
Fortran ライブラリー・プロジェクトを含む言語が混在したソリューションでは、IDE で [Disable Default Library Search Rules] を [No] に設定します。この設定を確認するには、[プロジェクト] > [プロパティ] > [Fortran] > [Libraries] を選択します。[Disable Default Library Search Rules] を [Yes] に変更する場合は、Fortran 以外のプロジェクトへ必要なランタイム・ライブラリーを明示的に追加する必要があります。明示的にライブラリーを追加する場合、Fortran 以外のプロジェクトのライブラリーに IFCONSOL.LIB が追加されていることを確認してください。このライブラリーは、インテル® Visual Fortran でほぼすべての I/O を実行するのに必要です。
C++ メインプログラムと Fortran ライブラリー・サブルーチンの場合、インテル® Visual Fortran の LIB フォルダーに手動でライブラリー・パスを追加する必要があります。これは、ユーザーごとに一度だけ行います。パスを追加するには、[ツール] > [オプション] > [プロジェクトおよびソリューション] > [VC++ ディレクトリ] を選択します。[ディレクトリを表示するプロジェクト:] ドロップダウンから、[ライブラリ ファイル] を選択します。表示されるリストに、パスを追加します。
Microsoft* Visual C++* の場合は、[プロジェクト] > [プロパティ] の [C/C++] で、使用するライブラリーを指定できます。[Code Generation] > [Run-time library] には、次の C ライブラリーがリストされます。
選択されるメニュー項目 |
有効にされる CL オプションまたはプロジェクトの種類 |
オブジェクト・ファイルで指定されるデフォルト・ライブラリー |
---|---|---|
マルチスレッド |
/MTd |
libcmt.lib |
マルチスレッド DLL |
/MD |
msvcrt.lib (msvcrnn.dll) |
デバッグ用マルチスレッド |
/MTd |
libcmtd.lib |
デバッグ用マルチスレッド DLL |
/MDd |
msvcrtd.lib (msvcrtd.dll) |
Fortran プロジェクトと C プロジェクトの両方で、必ず同じ種類のランタイム・ライブラリーを選択してください。例えば、Fortran プロジェクトでマルチスレッド DLL を選択した場合は、C プロジェクトでもマルチスレッド DLL を選択しなければなりません。そうしないと、Fortran と C が混在したアプリケーションをビルドする際、未定義のシンボル、重複したシンボルに関するリンクエラーが発生します。
Microsoft* Visual C++* またはインテル® C++ を使用している場合、特殊なディレクティブを使用したり、特別なステップを踏まなくても、Microsoft* 統合開発環境で Fortran/C のアプリケーションをビルドできます。C プログラムと Fortran プログラムを言語に応じた構文の色分けで編集し、参照することができます。Fortran ソースファイルは Fortran プロジェクトに、C/C++ ファイルは Visual C++* プロジェクトに配置する必要があります。
Visual C++* と Fortran が混在したアプリケーションをデバッグする際、デバッガーはデバッグ過程でコードの形式に自動的に対応します。C または Fortran の式エバリュエーターがデバッグ対象のコードに基づいて選択され、[呼び出し履歴] ウィンドウに、Fortran プロシージャーに対しては Fortran データ型、C プロシージャーに対しては C データ型が表示されます。