言語が混在したアプリケーションでは、インテル® Fortran のメインプログラムからほかの言語で書かれたサブプログラムを呼び出すことができます。また、逆に、ほかの言語で書かれたメインプログラムからインテル® Fortran のサブプログラム (DLL やスタティック・ライブラリーに含まれたサブプログラム) を呼び出すこともできます。
Microsoft* Visual Studio* プロジェクトは、単一言語をサポートするため、各言語のコードはそれぞれのプロジェクトに含める必要があります。
次に、言語が混在したプログラミングにおけるインテル® Fortran との互換性を、マネージドコードおよびアンマネージド・コードの両方を対象として説明します。マネージドコードはアーキテクチャーに依存しないコードで、Microsoft .NET 共通言語ランタイム環境の制御下で実行します。アンマネージド・コードは、アーキテクチャー固有のネイティブコードです。
言語が混在したアプリケーションは、さまざまな形式でメインプログラムおよびサブプログラムを提供できます。
コンパイル済みのオブジェクト (.OBJ) およびスタティック・ライブラリー (.LIB)
利点: 最も高いパフォーマンスを提供し、インテル® Fortran で簡単に使用できます。
欠点: オブジェクトとライブラリーがリンク互換でなければならず、言語サポート・ライブラリー内の名前は競合できません。
コンパイル済みのオブジェクトとスタティック・ライブラリーは、インテル® Fortran、インテル® C++、および Microsoft Visual C++* (アンマネージド) で作成できます。
また、これらのファイルはインテル® Fortran、インテル® C++、および Microsoft Visual C++ (アンマネージド) から呼び出し可能です。
ダイナミック・リンク・ライブラリー (.DLL)
利点: ネイティブコードのパフォーマンスを提供し、さまざまな言語から使用可能です。一般的に言語サポート・ライブラリーの競合はありません。
欠点: 一部の言語での使用が若干難しくなります。
ダイナミック・リンク・ライブラリーは、インテル® Fortran、インテル® C++、Microsoft Visual C++ (アンマネージド)、および Microsoft Visual Basic* (アンマネージド) などで作成できます。
また、これらのファイルはインテル® Fortran、インテル® C++、Microsoft Visual C++ (マネージドとアンマネージドの両方)、および Microsoft Visual Basic (マネージドとアンマネージド) などから呼び出し可能です。
.NET マネージド・コード・アセンブリー
利点: 理論的にアーキテクチャーに依存しない共用ランタイム環境で、DLL 内のアンマネージド・コードを呼び出すことが可能です。
欠点: ネイティブコードと比べ、パフォーマンスが低下します。言語の選択にも制限があり、アンマネージド・コードからの呼び出しがあると、インターフェイスがより複雑になります。
.NET マネージド・コード・アセンブリーは、Microsoft Visual C++ .NET、Microsoft Visual Basic .NET、およびその他の .NET 言語で作成できます。
また、これらのファイルはインテル® Fortran (Fortran モジュールウィザードで生成したインターフェイスを使用) および .NET 言語から呼び出し可能です。
インテル® Fortran のメインプログラムまたはサブプログラムは、Fortran 以外で書かれた、次のいずれかのサブプログラムを呼び出すことができます。
コンパイル済みのオブジェクトまたはスタティック・ライブラリー
[Project (プロジェクト)] > [Properties (プロパティ)] > [Linker (リンカー)] > [Input (入力)] > [Additional Dependencies (追加の依存ファイル)]、またはアプリケーションをリンクするコマンドラインから、.OBJ または .LIB の名前を指定してください。
言語が混在したソリューションを Visual C++ IDE で作成する場合、Win32* スタティック・ライブラリーとして別のプロジェクトを作成し、インテル® Fortran プロジェクトの依存プロジェクトとして指定します。作成したライブラリーは、自動的にリンクされます。
ダイナミック・リンク・ライブラリー
インポート・ライブラリーを (可能な場合、上記で説明したスタティック・ライブラリーとして) 提供します。
インポート・ライブラリーが存在しない場合は、Windows* API ルーチンの LoadLibrary および GetProcAddress を使用し、整数ポインターによってプロシージャーを呼び出します。
.NET マネージド・コード・アセンブリー
インテル® Fortran モジュールウィザードを使用して、アセンブリーのルーチンへのインターフェイスを生成できます。
インテル® Fortran のサブプログラムは、コンパイル済みのオブジェクト、スタティック・ライブラリー、またはダイナミック・リンク・ライブラリーとして、Fortran 以外の言語で書かれたメインプログラムまたはサブプログラムから呼び出すことができます (これは、呼び出し元の言語の機能に依存します)。.NET マネージド・コード・アセンブリーからインテル® Fortran コードを呼び出す場合は、Fortran コードが DLL 内になければなりません。詳細は、呼び出し元の言語のマニュアルを参照してください。
© 1996-2011 Intel Corporation. 無断での引用、転載を禁じます。