fortran-iso-c-binding

    2热度

    2回答

    如果我在fortran中声明一个整数为: INTEGER(C_INT) :: i那么,如果我理解正确,那么传递给C函数是安全的。现在忽略总是用这种方式声明整数的头痛,是否有任何理由不总是将变量声明为C-互操作?这样做有什么不好吗? 此外,在一些简单的整数情况下,C_INT从传统的Fortran整数改变到什么程度? Fortran和C整数实际上是不同的?

    3热度

    1回答

    我已包裹sqlite3_open,sqlite3_close,并从为了SQLite的(3.16.2版)C-API sqlite3_exec例程将它们从使用ISO_C_BINDING模块Fortran 2003的程序中调用。我使用Intel Fortran 17编译器(ifort),在Windows上使用MSVC 14,在Linux上使用gcc。 我的目标是打开的SQLite数据库和存储的指针数据库

    0热度

    1回答

    过程调用形式参数更实际我有一个关闭此具体和切合主题的问题,试图从libcurl的简单API从Fortran语言调用C: https://stackoverflow.com/questions/44891188/calling-libcurl-from-fortran-2008 按照意见的建议,我仍然遇到了关于如何从Fortran中正确调用C指针和C函数的错误。 没有太多的代码在这里,但主要问题是警

    4热度

    1回答

    我想特别学习C++/FORTRAN互操作性方面的最新进展。以下是我不成功的尝试,请帮助我纠正或提供更好的解决方案。 我的编译器是gcc 4.8.5 在C++ #include <iostream> extern "C"{ void SayHello(char*); } int main(int argc, char** argv){ char * name = argv

    4热度

    2回答

    我想从Fortran传递一个字符串到C/C++。这里是我的Fortran代码: subroutine zdplaskinGetSpeciesName(cstring, index) bind(C, name='zdplaskinGetSpeciesName') use iso_c_binding use ZDPlasKin implicit none int

    1热度

    1回答

    我想知道将数组从Fortran传递到C的正确方法。它返回的结果是iso_c_binding只有C_F_pointer但没有F_C_pointer。我尝试使用c_loc,但是第二个元素得到了-6.04639e-264。 我的Fortran代码是: SUBROUTINE SIMULATION(ARRAY) BIND(C) USE ISO_C_BINDING IMPLICIT NON

    2热度

    1回答

    通常,在Fortran类型声明中使用SAVE属性,以便变量在子程序结束时保留其值,如SO问题here的答案所述。不过,我最近在another question上举了一个例子,说明如何使用F2003的C_LOC内部特性和其他ISO_C_BINDING特性来写入Fortran函数,该函数只返回可分配字符串常量的C地址到C调用程序。 SAVE属性是否应该用于Fortran可分配字符串常量以避免潜在问题?

    2热度

    1回答

    我想将并行MPI Fortran程序链接到使用MPI的并行C库。软件架构是以Fortran为中心的,因此我试图尽可能保持Fortran方面的水平。 所以我需要将C例程一个句柄传递给MPI通信器。他们是形式 int CFunction(int *something, MPI_Comm *Ccomm) MPI自带接口,一个Fortran转换为一个C传播者手柄: MPI_Comm MPI_Comm_

    3热度

    1回答

    将intrinsic关键字添加到模块的use语句时,这意味着什么?如下例所示? use, intrinsic :: iso_c_binding (从 7.1 Overview of Fortran interface, FFTW 3.3.6-pl1) 是否指定编译器提供该名称的模块就可以使用,即使是由用户编写的同名另一个模块?

    2热度

    1回答

    我有一个调用两个C函数所需的Fortran应用程序。 一个加载一个文件,另一个在文件上运行约200次计算。 我知道一个C DLL不能'保存'加载的结构在一个静态变量中,以便在计算函数中重用,所以我正在寻找解析一个void *到Fortran并将其发送到C计算函数。 的C函数: __declspec(dllexport) void loadfile(void * file); // Empty po