gpt4 book ai didi

c - 用于调用返回指针的 C 函数的 Fortran 接口(interface)

转载 作者:太空宇宙 更新时间:2023-11-04 06:44:06 25 4
gpt4 key购买 nike

我有一个 C 函数,

double* foofunc() 
{
/* Function Body */
}

我不知道如何在 Fortran 中声明一个接口(interface)来调用这个 C 函数。

此外,如果指针应该指向 GPU 设备内存,我如何在 Fortran 接口(interface)中定义它?我需要使用 DEVICE 属性吗?

请使用 Fortran 2003 之前支持的功能。

有什么建议吗?

最佳答案

由于您拥有 Fortran 2003,连接 Fortran 和 C 的简单方法是使用 ISO C 绑定(bind)。 (大多数 Fortran 95 编译器现在都支持 ISO C 绑定(bind),即使它们不是完整的 Fortran 2003 编译器。)这比早期答案中建议的复杂方法要好得多,这在早期时代是必需的——它是语言的一部分,因此可移植,并且独立于编译器和平台。但是 Fortran 2003 版本并没有涵盖任何可能性。 (下一个 Fortran 将添加与 C 接口(interface)的其他情况。)您可以轻松传递一个 C 指针参数——只需在 Fortran 声明中省略“value”属性即可。指向指针的指针需要 C_PTR。我不知道指针作为函数返回...我有空时将不得不进行实验。如果必须的话,制作一个简单的 C 粘合例程,将函数返回的指针转换为参数——这种情况很容易。

Re 指向 GPU 设备内存的指针——除非您的编译器具有非标准功能,否则它不会有“DEVICE”。也许“易变”会有所帮助?创建适当的用户定义类型...

在“与 C 的互操作性”下的 gfortran 手册中有示例。由于这是语言的一部分,即使您没有使用 gfortran,本文档也应该有所帮助。

关于c - 用于调用返回指针的 C 函数的 Fortran 接口(interface),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3852790/

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