3

Fortran メイン プログラムから c++ 関数を呼び出そうとしています。それを行うには、Visual Studio 2010 で次の手順に従いました。 C++ スタティック ライブラリ プロジェクトを作成するには

  1. メニュー バーで、[ファイル]、[新規]、[プロジェクト] の順に選択します。
  2. [新しいプロジェクト] ダイアログ ボックスの左側のウィンドウで、[インストール済み]、[テンプレート]、[Visual C++] の順に展開し、[Win32] を選択します。
  3. 中央のウィンドウで、[Win32 コンソール アプリケーション] を選択します。
  4. [名前] ボックスにプロジェクトの名前 (MathFuncsLib など) を指定します。[ソリューション名] ボックスに、ソリューションの名前 (StaticLibrary など) を指定します。[OK] ボタンを選択します。
  5. [Win32 アプリケーション ウィザード] ダイアログ ボックスの [概要] ページで、[次へ] をクリックします。
  6. [アプリケーションの設定] ページの [アプリケーションの種類] で、[静的ライブラリ] を選択します。
  7. [アプリケーションの設定] ページの [追加オプション] で、[プリコンパイル済みヘッダー] チェック ボックスをオフにします。
  8. [完了] ボタンを選択して、プロジェクトを作成します。

実行可能な Fortran プロジェクトを作成するには

  1. メニュー バーで、[ファイル]、[新規]、[プロジェクト] の順に選択します。
  2. [新規プロジェクト] ダイアログ ボックスの左ペインで、[インストール済み]、[テンプレート]、[インテル(R) Visual Fortran] の順に展開し、[コンソール アプリケーション] を選択します。
  3. 中央のペインで、[空のプロジェクト] を選択します。
  4. プロジェクトの名前を指定してから、ソリューションの名前を指定します。ソリューション ボックスで、[ソリューションに追加] を選択します。[OK] ボタンを選択します。

さらに、以下のように Visual Studio でいくつかの設定を行います。

  1. 実行可能な Fortran プロジェクトを右クリックし、[依存関係] を選択して、実行可能プロジェクトをスタティック ライブラリ プロジェクトに依存するように設定します。
  2. 実行可能プロジェクトを右クリックし、[スタートアップ プロジェクトとして設定] を選択して、ビルドしてデバッグできるようにします。以下の 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   

誰でも私を助けることができますか?どんな提案でも大歓迎です。

4

1 に答える 1

2

C++ ライブラリを Fortran 実行可能ファイルにリンクする必要があります。依存関係はビルド順序を指定しています。

  1. 実行可能な Fortran プロジェクトを右クリックし、[プロパティ] を選択します。
  2. ビルド C++ ライブラリを含むディレクトリを [構成プロパティ] -> [リンカー] - [全般] -> [追加のライブラリ ディレクトリ] に追加します (この手順は必要ない場合があります)。
  3. C++ ライブラリ .lib ファイルを [構成プロパティ] -> [リンカー] -> [入力] -> [追加の依存関係] に追加します。
于 2014-08-19T09:05:21.287 に答える