问题标签 [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.
c - C_F_POINTER 导致未定义的数组
我试图将这个问题的代码修改为 ISO_C_BINDING,但是 C_F_POINTER 调用会导致未定义的指针/数组(VS2010 调试器)并print*, f_arr(i)
触发分段错误。我想我确实严格遵循数组 interop 的指示。
主程序
子f90
你知道为什么我在指针转换中会失败吗?(英特尔 fortran 编译器)
c - 通过 C 从 IDL 调用 fortran
经过大量搜索,我决定发布我的问题。
我必须将一些数组(一维和二维)传递给 IDL 到我的 fortran 例程(我是一个“现代 fortran”程序员)。IDL 是一种列主要语言,在调用 fortran 子例程之前,我已经分配了所有数组。
问题是IDL 可以将任何东西传递给C 函数,尽管将数组传递给fortran 的一些非标准方法是可行的(例如http://132.248.1.102/~morisset/idl_cours/IDL/fortran.htm
)。所有数组和结构参数都通过 IDL 函数 CALL_EXTERNAL ( http://www.exelisvis.com/docs/CALL_EXTERNAL.html )的引用传递
我正在寻找一个使用 ISO_C_BINDINGS 处理一维和二维数组的 fortran 包装器。我的 fortran 子例程具有与以下相同的接口(数学有点复杂)
我找到了很多好的答案,但我正在寻找一种传递二维数组的标准方法。我不必分配或取消分配 y_out 数组,只需用值填充它。在调用 fortran_sub_array 之前,对数组维度的所有检查都已在 IDL 中完成。
fortran - Fortran-C 函数指针在某些情况下导致 C 代码中的段错误
我正在修改fgsl,所以我可以传递函数指针而不是函数的名称。为此,我使用 Fortran bind(c) 函数,调用 c_funloc,调用 C 函数并将其分配给派生类型 (c_ptr)。但是,C 代码会根据我实现代码的方式给我提供段错误。
C代码:
现在我的主程序/模块:
c - 仅将 Fortran 整数数组传递给 C 子例程的第一个元素
我正在尝试将整数数组从 Fortran 传递给 C,但我只能传递数组的第一个元素。
我有下面的测试程序,它重现了错误。我哪里错了?
和
string - 在 Fortran 中分配字符数组
我必须编写一个可以被 C 和 Fortran 调用的子程序。该子例程将文件名作为其参数之一。我知道要与 C 很好地互操作,ISO C 绑定建议使用字符数组进行互操作。
我的问题是:是否存在易于编写的字符数组文字之类的东西?我有一个像这样的子程序:
是否可以通过以下方式调用它:
还是我必须做一些可怕的事情,例如:
我的主要问题似乎是它不喜欢假设形状的数组,并且给它一个集合(大)大小也会输出所有后来碰巧被拾取的垃圾内存。
有没有更好的方法来做到这一点?
python - Fortran - Cython 工作流程
我想设置一个工作流,以便在 Windows 机器上使用 Cython 从 Python 访问 fortran 例程
经过一番搜索,我发现: http ://www.fortran90.org/src/best-practices.html#interfacing-with-c和https://stackoverflow.com/tags/fortran-iso-c-binding/info
和一些代码图片:
Fortran 方面:
pygfunc.h:
pygfunc.f90
gfunc.f90
赛通方面:
pygfunc.pyx
和设置文件:
所有文件都在一个目录中
fortran 文件编译(使用 NAG Fortran Builder) pygfunc 编译
但链接它们会引发:
错误 LNK2019:函数 ___pyx_pf_7pygfunc_f 中引用的未解析的外部符号 _c_gfunc
而且当然:
致命错误 LNK1120:1 个未解决的外部问题
我错过了什么?还是这种在 Python 和 Fortran 之间建立工作流的方式从一开始就该死?
THX 马丁
c++ - c_f_pointer 不起作用
我有一个非常简单的程序,这让我很困惑。对 c_f_pointer 的调用不起作用,显然我犯了很多错误!
和 c++ 子例程是
当我编译并运行代码时,它会产生以下错误
谁能告诉我出了什么问题?
c# - 将数组指针从 Fortran(被调用者)传递给 C#(调用者)
我正在尝试将浮点数组从 C# 传递给 fortran,并让 fortran 将其引用更改为内部(在 fortran 代码中)数组。当我这样做时,我只是得到了垃圾,尽管它运行良好。以下是我所做的:
为什么?因为我正在将遗留代码制作成 dll,并且不想进行任何不必要的更改。有任何想法吗?
使用接受的答案进行更新和一些更改
此代码成功地使 C#:"test" 以 fortran:"arrayin" 的值为目标。
c - Fortran/C 混合:如何在 Fortran 中访问动态分配的 C 数组?
我目前遇到内存问题:我有一个用 Fortran 编码的主程序,它调用 C/C++ 子例程来执行一些任务并将数据存储在动态分配的数组中。问题是我需要在返回 Fortran 主程序时访问这些数据。我试图在 fortran 中声明一个 C 指针 (TYPE(C_PTR)) 以指向该数组,但它似乎不起作用。该数组存在于 C 子例程中,但是当我回到主 Fortran 程序时尝试访问它时出现段错误。我在这里给出我的代码,有什么想法吗?感谢您的帮助 !!
Fortran:
C 子程序:
输出:
fortran - 你如何在 fortran 中调用 bind-C 函数?
我刚开始使用 Fortran,我有一个程序和一个函数
我已经通过 JNA 让这个函数在 java 中工作,但是当我尝试从 fortran 主程序中调用 mult 时,我得到了大量的编译错误(如果你愿意,我可以提供它们)。我有一种感觉,它一定很明显,但我在任何地方都找不到解决方案。是否不打算从非外部代码中调用绑定函数?还是我只是对函数语法了解不足?