1

dllwrap-ed Fortran コードを C# にインポートできません。ここで示している例よりも少し複雑なことに実際に取り組んでいますが、単純な例を機能させてから、本格的な問題に取り組みたいと考えています。私は MinGW と MSYS を使用しています。

ファイル MyThreeDll.f 内の私の fortran コードは次のとおりです。

  integer function three()
     three = 3
     return
  end function

次にgfortran -c MyThreeDll.f、1 つの MyThreeDll.o ファイルの予想される出力で実行しました。次に実行したコマンドは
dllwrap --export-all-symbols MyThreeDll.o -gfortran -o MyThreeDll.dll
、dll ファイルを取得することでした。これを Visual Studio 2010 の C# コンソール プロジェクトのフォルダーに移動し、プロジェクトに追加して (参照として追加することは絶対にできません)、実行しようとします。次に、これが起こります。

私の Visual Studio セットアップのスクリーン キャプチャ

でdllを作成しようとしましたgfortran -sharedが、役に立ちませんでした。関数名の前後にアンダースコアを追加しても役に立ちません。これはグーグルが私を導いた限りなので、今私は立ち往生しています。

4

1 に答える 1

1

@HansPassant からのコメントで問題が解決しました。後世のために、他のすべてのものに加えてdllwrapオプションを指定してコマンドを実行すると、関数の結果の名前、つまりではなく--output-def MyThreeDll.def.def テキストファイルを取得することを追加する必要があります。three_()three()

これはどうやら dllwrap が gfortran の助けを借りて行うものであり、オプションで変更できると言われていますが、私にはその方法を探すエネルギーも必要もありません。

于 2013-08-07T12:23:24.983 に答える