読者です 読者をやめる 読者になる 読者になる

C++からfortran呼び出し方法 

開発環境 雑記

爆速かつ可読性のよいコード作成のため、表題の内容に手を出した。自分の専門性を見失っている気がする。


基本的には下記を参考にすればよい。
kazuki-nagasawa.hatenablog.com

で、C++の場合は、プロトタイプ宣言を下記のようにCでexternしてやる必要がある。
extern "C"{
extern void add_array_( int*, int * );
extern void multiple_matrix_( double *, int *, int * );
};
また、コンパイルのリンクに-lstdc++を設定する。これだけで使用可能。

配列は次元に関わらず先頭のアドレスを渡す。また、定数であっても必ずアドレス渡しを設定すること。

もちろん動的配列も上記同様で、vector型ならば&v[0]、boost/multiarray型ならばv.origin()でよい。

なお、Cとfortranでは配列のアドレスのとり方が違うので、そこは注意がいる。
d.hatena.ne.jp


行優先か、列優先かは面倒なところだが、それ以外は相当簡単。