小编T.B*_*own的帖子

混合编程-包括Fortran的C ++头

我试图在用Fortran编写的程序中使用C ++编写的库中的函数。C ++库在一个头文件中进行了汇总,因此,如果您只想在另一个C ++程序中使用它,#include functions.h我想了解如何在Fortran中执行类似的操作。

根据我的研究,我创建了这个最小可行的示例:

clib / functions.h:

#ifndef ADD_H
#define ADD_H
extern "C"
{
int __stdcall add(int x, int y);
} 
#endif
Run Code Online (Sandbox Code Playgroud)

clib / functions.cpp:

extern "C"
{
int __stdcall add(int x, int y)
{
    return x + y;
}
}
Run Code Online (Sandbox Code Playgroud)

cinclude.c

#include "clib/functions.h"
Run Code Online (Sandbox Code Playgroud)

cinterface.f95:

module cinterface
  use,intrinsic::ISO_C_BINDING
  integer(C_INT)::a,b
  interface
    integer(C_INT) function add(a,b) bind(C,name="add")
      use,intrinsic::ISO_C_BINDING
      implicit none
!GCC$ ATTRIBUTES STDCALL :: add
!DEC$ ATTRIBUTES STDCALL :: add
      integer(C_INT), value ::a,b
    end function add
  end interface
end …
Run Code Online (Sandbox Code Playgroud)

c++ fortran fortran-iso-c-binding

5
推荐指数
1
解决办法
228
查看次数

标签 统计

c++ ×1

fortran ×1

fortran-iso-c-binding ×1