gpt4 book ai didi

fortran - 从 Fortran : `` void *`` return value 调用 C

转载 作者:行者123 更新时间:2023-12-01 11:00:48 25 4
gpt4 key购买 nike

如何从 Fortran 调用 void *function(...)

我目前正在尝试从 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);

结构是私有(private)的,也就是说,我不知道它的成员。

问题:如何将返回值转换为 Fortran?我并不是真的需要访问它们,但我必须存储它们在它们的create...use...destroy 生命周期中不知何故。

最佳答案

您可以在 C 中创建对象,将指向它的指针传递给 Fortran,然后将该指针传递给 C 例程。最后,调用 C 例程来释放内存。 ISO C 绑定(bind)提供 Fortran 类型 C_PTR。

关于fortran - 从 Fortran : `` void *`` return value 调用 C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11021678/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com