从C ++调用Fortran有多“昂贵”?

时间:2019-04-02 06:55:16

标签: c++ fortran g++ gfortran

我正在用C ++编写一个程序,该程序调用一些我用Fortran编写的函数。我将测试一个非常基本的示例,在该示例中,我从C ++代码中调用了一个名为toRadians的函数:

real function toRadian(degree)
  implicit none

  real, intent(in) :: degree
  real :: radians

  radians = (degree*PI)/180
  return
end function toRadian

所以我想知道,这是否“值得”?当我完成整个工作时,将在Fortran中调用该函数,在该函数中将完成大量计算,但是通过执行此基本示例,我想到了对于这样的简单计算,调用Fortran函数是否比仅仅花费更昂贵的代价。在C ++中具有该功能?

对不起,很抱歉,我不确定这些编译代码之间的链接如何工作。 (我对Fortran还是很陌生,因此,如果您想对以前的功能做任何评论,请继续。)

感谢您的时间,祝您愉快。

1 个答案:

答案 0 :(得分:2)

调用Fortran函数与调用另一个C ++函数一样便宜。通常。

问题是两种语言之间的兼容性。在Fortran中启动此功能的最佳方法是使用yourBranchTag,以便该函数具有C调用约定。

然后另一个问题是两种语言都需要它们自己的运行时库,并且没有链接器标记可同时使用这两种语言。因此,通常的做法是为Fortran代码创建一个共享库,并将其链接到C ++应用程序(从Fortran调用C ++时,反之亦然)。