问题标签 [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 编译错误“在 (1) 处没有通用 'foo' 的特定子例程”?
我正在尝试使用 iso_c_bindings 模块将 Fortran 2003 绑定编写到 CUFFT 库,但我遇到了cufftPlanMany
子例程问题(类似于sfftw_plan_many_dft
FFTW 库中的问题)。
绑定本身如下所示:
调用部分如下所示:
不幸的是,试图编译这个结果
错误:在 (1) 处没有通用“cufftplanmany”的特定子程序
编译错误。尝试使用变量代替常量也无济于事。你能帮忙调试一下吗?
使用的编译器是gfortran:GNU Fortran (Gentoo 4.4.5 p1.2, pie-0.4.5) 4.4.5
parallel-processing - 使用 Fortran 的 Metis
我正在将 metis 5 与 Fortran 一起使用。我正在使用PartGraphRecursive
手册中给出的简单示例的功能。给出的代码不是工作条件。
任何人都可以完成此代码吗?我不太清楚如何在METIS_PartGraphRecursive
调用中使用不同的输入,因为我想使用的大多数输入都是 NULL。
PS 我正在使用带有pgf90
Fortran 编译器的 Linux,并且我正在使用以下命令来编译和链接文件。
libmetis.a 文件与 main 位于同一目录中。
c - 从 C 调用 FORTRAN 子例程
我正在尝试从 C 调用 FORTRAN 函数
我的问题是:
如果
/li>fortRoutine
是我的 fortran 子例程的名称,那么我从 C 中将其称为fortRoutine_
. 如果fortRoutine
只包含一个字符数组参数,那么我可以这样传递:在调用 FORTRAN 子例程时,我应该何时使用按值传递以及何时使用按引用传递?
由于我是 C 新手,所以我对此一无所知。如果可能的话,请推荐一些好的教程链接。
c - 从 C 库头文件自动生成 Fortran 2003 绑定(使用 iso_c_bindings 内部模块)
是否有使用Fortran 2003 标准的内部模块从 C 库头文件自动生成 Fortan绑定的工具?iso_c_bindings
我对将C 转换为 Fortran 不感兴趣,而只对生成绑定感兴趣。
c++ - 不同 Fortran 和 C 供应商之间的 ISO_C_BINDING
C/C++ 编译器供应商是否也支持 Fortran ISO_C_BINDING 模块的概念?例如,C/C++ 的大小int
可能因不同供应商的编译器而异。因此,使用 ISO_C_BINDING 模块,我们知道 FortranC_INT
类型是 4 个字节;而不仅仅是一种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 函数。
这个答案几乎是我所需要的,但我无法完全理解我应该在 Fortran 中为如下所示的 C 函数使用什么接口声明:
我不清楚 Fortran 端接口的声明应该是什么:
我知道我也必须处理空终止问题。
c - 带有 iso_c_bindings 的单个 C 函数的许多替代 Fortran 接口
是否可以使用内部模块为单个 C 函数/过程生成多个 Fortran 2003 接口iso_c_bindings
?
我想为 C 类型的参数与 Fortran 的参数不完全匹配的情况提供替代接口,例如*float
在 C 中可能是数组、对单个变量的引用或指针 (C_PTR_NUL)。
c - 为返回 char* 的 C 函数创建 FORTRAN 接口
我已经为此困扰了大约一个星期,并且已经在一个又一个论坛中搜索了一个关于如何将 char* 从 C 发送到 FORTRAN 的清晰解释。为了让事情更令人沮丧,将 char* 参数从 FORTRAN 发送到 C 是直截了当的......
将 char* 参数从 FORTRAN 发送到 C(这工作正常):
来自 FORTRAN:
当尝试使用类似的逻辑从 C 返回一个 char* 时,我遇到一个又一个问题。我认为应该奏效的一种尝试是:
和 FORTRAN 界面:
(我不能从字面上使用 DIMENSION(*),所以我已经超大到 255。)
这应该返回一个指向 255 个 C 样式字符的数组的指针 - 但如果是这样,我无法将其转换为有意义的字符串。在实践中,它会返回一组随机字符,从 Wingdings 到“bell”字符的任何位置......
我也试图返回:
- 指向 CHARACTER (LEN=255, KIND=C_CHAR) 的指针。
- 字面意思是 CHARACTER(LEN=255, KIND=C_CHAR)。
- 一个 INTEGER(C_SIZE_T),并试图将其巧妙地转换为一个指向字符串数组的指针。
- 一个人物。
- 等等
如果有人可以给我一个如何做到这一点的例子,我将非常感激......
最好的祝福,
麦克风
linux - 套接字编程 gfortran
我希望能够在我的 Fortran 应用程序中调用网络功能。我的老板希望我用 Fortran 做所有事情,而不是使用 C 和 Fortran。我们已经在 Windows 上使用 PGI 的 Fortran 编译器完成了该应用程序的一个版本。我们正在将它转移到 Linux 上,我们可能会在其中使用他们的编译器。现在,我正在使用 gfortran。
我为这些网络调用创建了一个接口,并且一切都编译和链接。下面的代码与我正在做的类似,除了接口和常量在一个模块中。
当我运行程序时,套接字函数返回 -1 失败。我真的不知道发生了什么事。我没有在命令行上添加任何库,所以我猜它与默认库正确链接。我编译使用