在成功实现Java调用C++之后,接下来想到能否通过JNA实现Java调用Fortran,今天试验了一下,还是比较容易的。
网上有一个Java调用F95的例子,但是我考虑不仅要实现F95的调用,还要实现F77的调用,所以费了一些周折。
问题的关键在于F77为过程名自动添加了一个尾部的下划线,所以sub1这个过程,到Java一端,就变成了sub1_,知道了这一点,后面就简单了。
1、创建一个动态链接库项目FortranDLL,新建一个简单的fortran源程序for1.f:
subroutine sub1(i)
INTEGER i;
PRINT*, "SUB1 CALLED"
PRINT*, i
END subroutine
编译代码生成libFortranDLL.dll。
2、新建一个Java项目,包含JNA库
创建一个动态库接口代码FLib.java:


