我正在用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还是很陌生,因此,如果您想对以前的功能做任何评论,请继续。)
感谢您的时间,祝您愉快。
答案 0 :(得分:2)
调用Fortran函数与调用另一个C ++函数一样便宜。通常。
问题是两种语言之间的兼容性。在Fortran中启动此功能的最佳方法是使用yourBranchTag
,以便该函数具有C调用约定。
然后另一个问题是两种语言都需要它们自己的运行时库,并且没有链接器标记可同时使用这两种语言。因此,通常的做法是为Fortran代码创建一个共享库,并将其链接到C ++应用程序(从Fortran调用C ++时,反之亦然)。