在Julia中集成Fortran代码

我在我自己的模块上使用GNU gfortran编译器(在Cygwin上).一个很好的例子有望从编译阶段开始,解决损坏的名称并通过ccall从Julia调用子例程.我见过的大多数例子都跳过前两个阶段.

所以想象一下,我在Fortran 90文件中有以下模块名为’f90tojl.f90’:

module m
contains
    integer function five()
      five = 5
    end function five
end module m

这个例子来自here.我用gfortran编译它,如下所示来创建一个共享库:

gfortran -shared -O2 f90tojl.f90 -o -fPIC f90tojl.so

而且,通过阅读朱莉娅文档,我的,理所当然的不稳定的理解表明,我应该能够像这样调用函数五:

ccall( (:__m_MOD_five, "f90tojl"), Int, () )

它对我不起作用.我得到’错误编译匿名:无法加载模块f90tojl ….有人关心启发我吗?我有一种偷偷摸摸的感觉,我正在做些傻事……

在官方doc,重点是C.我也知道this的C.在R和Python中,动力 – 我想到了Cython和Rcpp–似乎是C/C++.与question类似,我想了解一下使用C/C++将Julia与Fortran与Julia联系起来是多么容易.

正如文档所述,调用Fortran和C基本相同.我想,只有很少的例子,因为人们想要包装的代码要少得多.在Julia,包裹C非常容易,非常愉快.它通常不是为了加速Julia,就像使用R或Python一样,但更多的是利用已编写的高质量代码.

Julia的标准库本身就是与Fortran代码集成的一个很好的例子,例如:这里是Julia wrapperJulia wrapper.在Base之外,glmnet是用Fortran编写的,有一个Julia wrapper for it (GLMNet.jl).

我不知道现代Fortran的区别如何重要.

相关文章
相关标签/搜索