問題タブ [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.
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
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.
c - CからFORTRANサブルーチンを呼び出す
CからFORTRAN関数を呼び出そうとしています
私の質問は次のとおりです。
/li>fortRoutine
が私のFortranサブルーチンの名前である場合、これをCから。として呼び出していfortRoutine_
ます。fortRoutine
文字配列引数が1つしかない場合は、次のように渡すことができますか?FORTRANサブルーチンを呼び出すときに、値渡しと参照渡しをいつ使用する必要がありますか?
私はCに慣れていないので、これについての手がかりはありません。可能であれば、いくつかの良いチュートリアルリンクも提案してください。
c - C ライブラリ ヘッダーからの Fortran 2003 バインディングの自動生成 (iso_c_bindings 組み込みモジュールを使用)
Fortran 2003 標準の組み込みモジュールを使用して、C ライブラリ ヘッダーからFortanバインディングを自動的に生成するツールはありますか?iso_c_bindings
C を Fortran に変換することには興味がなく、バインディングを生成するだけです。
c++ - 異なる Fortran および C ベンダー間の ISO_C_BINDING
Fortran ISO_C_BINDING モジュールの概念は、C/C++ コンパイラ ベンダーでもサポートされていますか? たとえば、C/C++ のサイズは、int
さまざまなベンダーのコンパイラによって異なる場合があります。したがって、ISO_C_BINDING モジュールを使用すると、FortranC_INT
型が 4 バイトであることがわかります。しかし、一般的なint
C/C++の のサイズはまだわかっていません。私は正しいですか?おそらく、標準の C/C++ ISO_C_BINDING 互換のコンパイラ スイッチはありますか?
c - Cから「呼び出された」fortranルーチン内で配列を割り当てる方法
タイトルは私が必要としているものだと思います。「asd」関数を使用してこれを行うことができることはわかっていますが、いくつかの理由で Fortran で (つまり、サブルーチン「asd_」で) 割り当てを行う必要があります。Cコードは次のとおりです。
Fortran コードは次のとおりです。
これにより、ランダムにセグメンテーション違反が発生します。どんな助けでも大歓迎です。
c - iso_c_binding を使用した Fortran-C ブリッジの文字列の配列
Fortran の C 相互運用メカニズム (Fortran 2003 で導入され、gfortran と ifort の新しいバージョンで実装されています) を使用して、Fortran から C 関数を呼び出すコードを書いています。
この答えはほとんど私が必要としているものですが、次のような C 関数に対して Fortran でどのインターフェイス宣言を使用する必要があるのか について、頭がよくわかりません。
Fortran側のインターフェースの宣言がどうあるべきかはっきりしていません:
null 終了の問題にも対処しなければならないことはわかっています。
c - iso_c_bindingsを使用した単一のC関数への多くの代替Fortranインターフェース
iso_c_bindings
組み込みモジュールを使用して、単一のC関数/プロシージャーに対して複数のFortran 2003インターフェースを生成することは可能ですか?
CタイプのパラメーターがFortranのものと完全に一致しない状況に対応する代替インターフェースが必要です。たとえば*float
、Cの場合、配列、単一変数への参照、またはポインター(C_PTR_NUL)の場合があります。
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) であり、それを文字列配列へのポインターに精巧にしようとしました。
- キャラクター。
- 等
誰かがこれを行う方法の例を教えてくれれば、とても感謝しています...
よろしくお願いします、
マイク
linux - ソケットプログラミング gfortran
Fortran アプリケーションでネットワーク機能を呼び出せるようにしたいと考えています。私の上司は、C と Fortran を使用する代わりに、Fortran ですべてを行うように私に求めています。Windows で PGI の Fortran コンパイラを使用するバージョンのアプリケーションを既に作成しています。Linux に移行しており、おそらく Linux のコンパイラを使用する予定です。現在、gfortran を使用しています。
これらのネットワーク呼び出し用のインターフェイスを作成し、すべてをコンパイルしてリンクします。以下のコードは、インターフェイスと定数がモジュール内にあることを除いて、私がやっていることと似ています。
プログラムを実行すると、ソケット関数が失敗して -1 が返されます。何が起こっているのかよくわかりません。コマンドラインにライブラリを追加していないので、デフォルトのライブラリと正しくリンクしていると思います。を使用してコンパイルします