Fortran メイン プログラムから c++ 関数を呼び出そうとしています。それを行うには、Visual Studio 2010 で次の手順に従いました。 C++ スタティック ライブラリ プロジェクトを作成するには
- メニュー バーで、[ファイル]、[新規]、[プロジェクト] の順に選択します。
- [新しいプロジェクト] ダイアログ ボックスの左側のウィンドウで、[インストール済み]、[テンプレート]、[Visual C++] の順に展開し、[Win32] を選択します。
- 中央のウィンドウで、[Win32 コンソール アプリケーション] を選択します。
- [名前] ボックスにプロジェクトの名前 (MathFuncsLib など) を指定します。[ソリューション名] ボックスに、ソリューションの名前 (StaticLibrary など) を指定します。[OK] ボタンを選択します。
- [Win32 アプリケーション ウィザード] ダイアログ ボックスの [概要] ページで、[次へ] をクリックします。
- [アプリケーションの設定] ページの [アプリケーションの種類] で、[静的ライブラリ] を選択します。
- [アプリケーションの設定] ページの [追加オプション] で、[プリコンパイル済みヘッダー] チェック ボックスをオフにします。
- [完了] ボタンを選択して、プロジェクトを作成します。
実行可能な Fortran プロジェクトを作成するには
- メニュー バーで、[ファイル]、[新規]、[プロジェクト] の順に選択します。
- [新規プロジェクト] ダイアログ ボックスの左ペインで、[インストール済み]、[テンプレート]、[インテル(R) Visual Fortran] の順に展開し、[コンソール アプリケーション] を選択します。
- 中央のペインで、[空のプロジェクト] を選択します。
- プロジェクトの名前を指定してから、ソリューションの名前を指定します。ソリューション ボックスで、[ソリューションに追加] を選択します。[OK] ボタンを選択します。
さらに、以下のように Visual Studio でいくつかの設定を行います。
- 実行可能な Fortran プロジェクトを右クリックし、[依存関係] を選択して、実行可能プロジェクトをスタティック ライブラリ プロジェクトに依存するように設定します。
- 実行可能プロジェクトを右クリックし、[スタートアップ プロジェクトとして設定] を選択して、ビルドしてデバッグできるようにします。以下の Fortran メイン プログラムと C++ 関数があります。
Fortran プログラム
program main
use iso_c_binding, only : C_CHAR, C_NULL_CHAR
implicit none
interface
subroutine print_C ( string ) bind ( C, name = "print_C" )
use iso_c_binding, only : C_CHAR
character ( kind = C_CHAR ) :: string ( * )
end subroutine print_C
end interface
call print_C ( C_CHAR_"Hello World!" // C_NULL_CHAR )
end
C++ 関数
# include <stdlib.h>
# include <stdio.h>
extern "C" void print_C (char *text)
{
printf("%s\n", text);
}
プログラムをビルドすると、次のエラーに直面します。
Error 1: error LNK2019: unresolved external symbol _print_C referenced in function _MAIN__ Fortranmain.obj
Error 2: fatal error LNK1120: 1 unresolved externals Debug\Fortranmain.exe
誰でも私を助けることができますか?どんな提案でも大歓迎です。