fortran-iso-c-binding相关内容
我花了几天时间学习 Fortran 的 C 互操作性,以便从 C 调用 Fortran 函数 DLL.在这里我找到了这个链接:在 C 中使用 Fortran 代码 我尝试像这样创建一个 Fortran DLL,而我的编译器是 Intel Fortran 编译器: 模块集成隐式无包含函数积分(func,a,b,intsteps)结果(积分)!DEC$ 属性 DLLEXPORT :: 集成界面
..
我正在尝试从 C 调用一些 Fortran 代码,但我没有找到传递 C 字符数组的正确方法. SUBROUTINE My_F_Code (c_message) BIND(C, NAME='my_f_code')使用 ISO_C_BINDING隐式无CHARACTER*(C_CHAR) c_message字符*(256) f_message调用 C_F_POINTER(C_LOC(c_messa
..
我需要将一个动态数组从 c++ 传递到 Fortran.我做了很多研究来整理一个我认为应该有效的例子,但事实并非如此.该程序应在 c++ 程序中创建一个数组,将该数组的指针传递给 Fortran 例程,将 C 指针转换为 Fortran 指针,然后在 Fortran 端打印该数组. 我的 c++ 主程序: 使用命名空间标准;外部“C"{无效 cinterface(int*,int*);}主
..
我认为标题说明了我的需要.我知道我们可以使用“asd"函数来执行此操作,但由于某些原因,我需要在 Fortran 中进行分配(即在子程序“asd_"中).这是C代码: #include 无效 asd(float **c) {*c = (float *) malloc (2*sizeof(float));**c =123;*(*c+1)=1234;}无效 asd_(float *
..
几周前我发布了一个类似的问题(iso_c_binding 使用来自 Fortran 数组的指针调用 C 例程),我找到了解决问题的方法.现在我修改了一些东西,我又遇到了一些问题.下面是我的问题的简化版本. 我在 fortran 中有一个主程序: 程序 main_dummy!编译:gcc -c dummy_trace.c!f95 光线追踪.f90 main_dummy.f90 dummy_t
..
我正在编写代码,该代码将使用 Fortran 的 C 互操作性机制(在 Fortran 2003 中引入并在较新版本的 gfortran 和 ifort 中实现)从 Fortran 调用 C 函数. 这个答案 几乎是我需要的,但我不太清楚我应该使用什么接口声明在 Fortran 中使用如下所示的 C 函数: int use_array(int n, char * array[]){诠释我;
..
我正在将我们的一些 Fortran 库代码转换为 C,以便我们最终拥有带有 Fortran 包装器的 C 函数.我们正在使用 Fortran 95. 处理可分配数组的首选方法是什么? 我可以将一个可分配数组传递给一个 C 函数并在 C 函数中 malloc 吗?(C 函数知道要分配的大小) 在 fortran 程序中,我可以取消分配在 C 函数中分配的东西吗?所以最后要么是客户端
..
我有一个大型的现有 Fortran95 代码.它使用 real(dp), dimension(num) :: 数组 声明数组. 我想加入一些 C 代码,发现我可以通过编写 C 函数的接口并将数组声明为来做到这一点 使用 iso_c_binding真实(c_double),可分配,目标::数组(:) 我有调用 C 函数的 fortran 函数 调用 myfunction(c_loc(
..
两周多来,我一直在努力给其中一个 METIS 从我的 fortran 代码中用 C 语言编写的库.而且,不幸的是,没有你的帮助,这似乎不是一个快乐的结局.我发现了一些关于 直接调用 和 使用界面.我更喜欢后者,因为我可以监视变量以进行调试.我附上了三个代码. 1.我要使用的c函数 2. fortran接口模块 3. fortran程序 (1)c函数 int METIS_PartM
..
是否可以将 fortran 77 函数作为回调函数指针传递给 C/C++?如果有,怎么做? 我在网上找到的信息与 fortran 90 及更高版本有关,但我的旧代码库在 77 中. 非常感谢 解决方案 如果可以在 FORTRAN 77 中完成,它将是编译器和平台特定的.Fortran 2003 的新 ISO C 绑定提供了混合 Fortran 和 C 以及任何遵循或可以遵循 C
..
在 Fortran 中对浮点文字使用科学记数法很容易: 1.5d-10 表示双精度(无论在当前 Fortran 编译器设置下意味着什么)浮点值,近似于 1.5*10^-15. 但是,指数符号和浮点类型说明符的融合有点问题.当希望它具有 C_DOUBLE 类型时,如何声明这个浮点字面量? 我知道这有点吹毛求疵,但在某些情况下,双精度可能与 C_DOUBLE 不同. 解决
..
如何在使用可选参数的 C++ 标头中引用 Fortran 函数?对于每个可能的调用组合,我会在标题中放置一个原型吗?或者这甚至可能吗? 例如,Fortran: 子程序 foo(a, b, c) bind(c)真实的,意图(in),可选 :: a, b, c...结束子程序 foo 解决方案 这是不可能的,至少是可移植的,除非你制作子程序 bind(C). 一旦你做了 bind(C
..
我在将二维数组从 Fortran 传递到 C 时遇到问题.以下是我的 C 函数,它只在屏幕上显示数组元素. #include void print2(double *arr , int *n){整数 y = *n;printf("\n y = %d", y);for(int i =0; i 到目前为止,我的 Fortran 代码如下: 程序链接FwithC使用,内在 ::
..
我有一个 Fortran 代码,其中包含许多包含指针的派生类型.我正在编写需要访问这些变量的 C++ 代码.如果没有指针,我无法重写这些派生类型,因为它们在 Fortran 代码中的数百个不同地方使用. 下面是示例代码: 简单的模块使用 iso_c_binding类型,绑定(C)::简单整数 :: A整数、指针 :: B、C(:)端型简单结束模块简单 我需要从 C 中访问 SIMPLEF
..
我正在尝试使用 iso_c_bindings 模块将 Fortran 2003 绑定编写到 CUFFT 库,但是 cufftPlanMany 子例程(类似于 FFTW 库中的 sfftw_plan_many_dft)存在问题.p> 绑定本身如下所示: !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
..
我正在尝试将一个数组从 C/C++ 传递到 Fortran 2003 模块,并将计算值返回到 C/C++.我已经能够很好地传递和返回单个值(标量),但是来回获取 array 证明是困难的.我发现了很多关于标量值的线程,并且我已经成功地完成了这些工作. 我已经按照我的工作标量函数对基于数组的函数进行了建模. 我正在使用 gcc/gfortran. 这是 Fortran 模块 (Co
..
我想设置一个工作流,以便在 Windows 机器上使用 Cython 从 Python 访问 fortran 例程 经过一番搜索,我发现:http://www.fortran90.org/src/best-practices.html#interfacing-with-c 和 https://stackoverflow.com/tags/fortran-iso-c-binding/信息
..
我正在尝试从 C 调用 FORTRAN 函数 我的问题是: 如果 fortRoutine 是我的 fortran 子例程的名称,那么我从 C 调用它作为 fortRoutine_.如果 fortRoutine 只包含一个字符数组参数,那么我可以这样传递: fortRoutine_("我在 fortran"); 在调用 FORTRAN 子程序时,什么时候应该使用传值和传引用?
..
我在网上做了一些搜索,但我找不到如何从 linux 编译简单的 C++ 和 Fortran 代码.我需要让它变得复杂,但我只需要知道如何从一个简单的例子开始. 我的 C++ 代码是这样的: #include 使用命名空间标准;extern int Add(int *, int *);extern int 乘法(int *,int *);主函数(){整数a,b,c;cou
..
我正在尝试编译和链接调用 c 子例程的 Fortran 代码: Fortran 代码: 程序加法器整数 a,ba=1b=2调用 addnums(a,b)停止结束程序 C 代码: void addnums( int* a, int* b ){int c = (*a) + (*b);/* 将指针转换为值,然后添加它们 */printf("%i 和 %i 之和为 %i\n", (*a), (
..