問題タブ [fortran-iso-c-binding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
2 に答える
8446 参照

compiler-errors - Fortran 90 コンパイル エラー「一般的な 'foo' at (1) の特定のサブルーチンはありません」をデバッグする方法は?

iso_c_bindings モジュールを使用して Fortran 2003 バインディングを CUFFT ライブラリに書き込もうとしていますが、サブルーチンに問題があります( FFTW ライブラリcufftPlanManyと同様)。sfftw_plan_many_dft

バインディング自体は次のようになります。

呼び出し部分は次のようになります。

残念ながら、これをコンパイルしようとすると、

エラー: (1) の一般的な 'cufftplanmany' に固有のサブルーチンはありません

コンパイル エラー。定数の代わりに変数を使用しようとしても役に立ちませんでした。これをデバッグするのを手伝ってもらえますか?

使用するコンパイラはgfortranです: GNU Fortran (Gentoo 4.4.5 p1.2, pie-0.4.5) 4.4.5

0 投票する
1 に答える
1271 参照

parallel-processing - Metis with Fortran

I am using metis 5 with Fortran. I am using the PartGraphRecursive function with the simple example given in the manual. The code is given as which is not the working condition.

Can anybody complete this code? I am not very clear how to use the different inputs to the METIS_PartGraphRecursive call as most of the input I want to use is NULL.

P.S. I am using Linux with the pgf90 Fortran compiler and I am using the following command to compile and link the file.

The libmetis.a file is in the same directory as main.

0 投票する
3 に答える
13588 参照

c - CからFORTRANサブルーチンを呼び出す

CからFORTRAN関数を呼び出そうとしています

私の質問は次のとおりです。

  1. fortRoutineが私のFortranサブルーチンの名前である場合、これをCから。として呼び出していfortRoutine_ます。fortRoutine文字配列引数が1つしかない場合は、次のように渡すことができますか?

    /li>
  2. FORTRANサブルーチンを呼び出すときに、値渡しと参照渡しをいつ使用する必要がありますか?

私はCに慣れていないので、これについての手がかりはありません。可能であれば、いくつかの良いチュートリアルリンクも提案してください。

0 投票する
2 に答える
774 参照

c - C ライブラリ ヘッダーからの Fortran 2003 バインディングの自動生成 (iso_c_bindings 組み込みモジュールを使用)

Fortran 2003 標準の組み込みモジュールを使用して、C ライブラリ ヘッダーからFortanバインディングを自動的に生成するツールはありますか?iso_c_bindings

C を Fortran に変換することには興味がなく、バインディングを生成するだけです。

0 投票する
2 に答える
702 参照

c++ - 異なる Fortran および C ベンダー間の ISO_C_BINDING

Fortran ISO_C_BINDING モジュールの概念は、C/C++ コンパイラ ベンダーでもサポートされていますか? たとえば、C/C++ のサイズは、intさまざまなベンダーのコンパイラによって異なる場合があります。したがって、ISO_C_BINDING モジュールを使用すると、FortranC_INT型が 4 バイトであることがわかります。しかし、一般的intC/C++の のサイズはまだわかっていません。私は正しいですか?おそらく、標準の C/C++ ISO_C_BINDING 互換のコンパイラ スイッチはありますか?

0 投票する
3 に答える
1653 参照

c - Cから「呼び出された」fortranルーチン内で配列を割り当てる方法

タイトルは私が必要としているものだと思います。「asd」関数を使用してこれを行うことができることはわかっていますが、いくつかの理由で Fortran で (つまり、サブルーチン「asd_」で) 割り当てを行う必要があります。Cコードは次のとおりです。

Fortran コードは次のとおりです。

これにより、ランダムにセグメンテーション違反が発生します。どんな助けでも大歓迎です。

0 投票する
1 に答える
4392 参照

c - iso_c_binding を使用した Fortran-C ブリッジの文字列の配列

Fortran の C 相互運用メカニズム (Fortran 2003 で導入され、gfortran と ifort の新しいバージョンで実装されています) を使用して、Fortran から C 関数を呼び出すコードを書いています。

この答えはほとんど私が必要としているものですが、次のような C 関数に対して Fortran でどのインターフェイス宣言を使用する必要があるのか​​ について、頭がよくわかりません。

Fortran側のインターフェースの宣言がどうあるべきかはっきりしていません:

null 終了の問題にも対処しなければならないことはわかっています。

0 投票する
1 に答える
243 参照

c - iso_c_bindingsを使用した単一のC関数への多くの代替Fortranインターフェース

iso_c_bindings組み込みモジュールを使用して、単一のC関数/プロシージャーに対して複数のFortran 2003インターフェースを生成することは可能ですか?

CタイプのパラメーターがFortranのものと完全に一致しない状況に対応する代替インターフェースが必要です。たとえば*float、Cの場合、配列、単一変数への参照、またはポインター(C_PTR_NUL)の場合があります。

0 投票する
7 に答える
7789 参照

c - char* を返す C 関数への FORTRAN インターフェイスの作成

私はこれについて約 1 週間待たされており、C から FORTRAN に char* を送信する方法の明確な説明を求めて、次から次へとフォーラムを検索しました。さらに苛立たしいことに、FORTRAN から C に char* 引数を送信するのは簡単でした...

FORTRAN から C に char* 引数を送信する (これは問題なく動作します):

そしてFORTRANから:

類似のロジックを使用して C から char* を返そうとすると、次々と問題が発生します。私がうまくいくはずだと感じた1つの試みは次のとおりです。

そしてFORTRANインターフェース:

(DIMENSION(*) は文字通り使えないので、255 にオーバーサイズしました。)

これは 255 個の C スタイル文字の配列へのポインターを返すはずですが、もしそうなら、これを意味のある文字列に変換できませんでした。実際には、Wingdings から「ベル」の文字まで、ランダムな文字セットを返します...

私も返そうとしました:

  • CHARACTER(LEN=255, KIND=C_CHAR) へのポインター。
  • 文字通り CHARACTER(LEN=255, KIND=C_CHAR)。
  • INTEGER(C_SIZE_T) であり、それを文字列配列へのポインターに精巧にしようとしました。
  • キャラクター。

誰かがこれを行う方法の例を教えてくれれば、とても感謝しています...

よろしくお願いします、

マイク

0 投票する
2 に答える
4088 参照

linux - ソケットプログラミング gfortran

Fortran アプリケーションでネットワーク機能を呼び出せるようにしたいと考えています。私の上司は、C と Fortran を使用する代わりに、Fortran ですべてを行うように私に求めています。Windows で PGI の Fortran コンパイラを使用するバージョンのアプリケーションを既に作成しています。Linux に移行しており、おそらく Linux のコンパイラを使用する予定です。現在、gfortran を使用しています。

これらのネットワーク呼び出し用のインターフェイスを作成し、すべてをコンパイルしてリンクします。以下のコードは、インターフェイスと定数がモジュール内にあることを除いて、私がやっていることと似ています。

プログラムを実行すると、ソケット関数が失敗して -1 が返されます。何が起こっているのかよくわかりません。コマンドラインにライブラリを追加していないので、デフォルトのライブラリと正しくリンクしていると思います。を使用してコンパイルします