void *function(...)
Fortranからを呼び出す方法は?
私は現在、FortranからいくつかのC関数を呼び出そうとしています。以前にそうしましたが、自分の関数だけを呼び出しました。たとえば、次のように呼び出します。
void add(int *csum, int *ca, int *cb) { *csum = *ca + *cb; }
Fortranから、私は以下を使用しました:
INTEGER :: fsum, fa, fb
CALL add(fsum, fa, fb)
これは正常に機能します。今、私は大まかに次のようないくつかの関数を持っています:
void *create_obj(void);
void use_obj(void *obj);
void free_obj(void *obj);
あるいは:
struct private_struct; /* defined somewhere else */
struct private_struct *create_p(void);
void use_p(struct private_struct *p);
void free_f(struct private_struct *p);
構造体がプライベートである場合、つまり、私はそのメンバーについての知識がありません。
質問: Fortranに戻り値を取得するにはどうすればよいですか?私は実際にそれらにアクセスする必要はありませんが、それらのライフサイクルの間に何らかの方法でそれらを保存する必要がcreate
ありuse
ますdestroy
。