2016-03-22 8 views
-1

FORTRANのコードを開発する責任があります。これはC++で書かれた.dllファイルを呼び出し、その中のサブルーチンを使用します。計算のためのdllファイル。 私はそのような実装の可能性に関して.dllファイルの開発者に郵送しました。以下は開発者への返信ですFORTRANでC++のdllファイルを呼び出すにはC++インタフェースのCラッパーを作成します。

このインターフェイスはFORTRANから直接呼び出すことはできません。 C++クラスインターフェイス周りの標準Cラッパーを作成し、(にリンクおよびVisual Studio用の.dllを呼び出すことができますコンパイラで)FORTRANから、標準Cを呼び出すことが可能であろう。」

は、自分がいます

現在までのところ:dllファイルのソースコードがないので、私はdumpbinを実行して名前を抽出していたので、私はdllファイルのソースコードを持っていませんでした。

+1

FortranとCとのインターフェースについては、ここでタグ全体[tag:fortran-iso-c-binding]があります。Cでは 'extern" C "'を追加するだけです。 Thareは、そのタグのC++に関する多くの質問と回答です。あなたの質問から、FortranがC++を呼び出しているのか、その反対か両方かどうかは不明です。 –

+0

@VladimirF「FORTRANでコードを開発すると、C++で書かれた.dllファイルが呼び出され、dllファイルのサブルーチンが計算に使用されます。ので、彼は彼のfortranコードからC++関数を呼び出すことを望んでいると私には非常にはっきりと見えます。私の質問は、あなたはC言語であなたのメインプロジェクトを作ってから、C++ dllと彼のFortranサブルーチンをライブラリとして呼び出すことができますか? – Alex

+0

@Slex OK、私はそれを読むと失われました。あなたのもう一つの点について、なぜこのような合併症を導入するのですか? –

答えて

1

それぞれがextern "C"と宣言された一連のC++関数を作成してcalle dをFortranから取得します。それらをビルドするには、DLLのヘッダーファイルが必要です。これをインクルードし、単純なfortran-callable関数からDLLによって宣言されたAPIにマップするために書く必要のあるC++コードを記述します。

+0

アップデート。 dumpbinコマンドを使用して.libファイルを作成し、C++で静的ライブラリプロジェクトを作成し、関数の名前の前に** extern "C" **と宣言された "extern.hpp"というファイルを作成しました。それらをコンパイルしようとしましたが、実際にコンパイルされました。しかし、.libファイルは生成されませんでした。間違ったことをやっているのですか、まったく新しいアプローチをとるべきですか? –

関連する問題