JNA实现Java调用Fortran

在成功实现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:

import com.sun.jna.Library;

import com.sun.jna.ptr.ByReference;

public interface FLib extends Library {

void sub1_(ByReference  i);

}

创建一个主程序Main.java

import com.sun.jna.Native;

import com.sun.jna.ptr.IntByReference;

public class Main {

public static void main(String[] args) {

// Loading dynamically the library

FLib lib2 = (FLib) Native.loadLibrary("libFortranDLL", FLib.class);

IntByReference a = new IntByReference(1234);

lib2.sub1_(a);

}

}

注意,关键在于接口当中的sub_这个命名规则,否则无法找到找到指定过程,另外默认情况下,fortran使用引用参数,所以不能简单实用int作为参数,必须实用引用参数。

运行程序,得到如下结果:

run:

SUB1 CALLED

1234

成功生成(总时间:1 秒)

3、G95的调用更简单一些,可以直接使用bind指定输

相关文档:

引用

1.点 “window”-> "Preferences" -> "Java" -> "Installed JRES"

2.此时"Installed JRES"右边是列表窗格,列出了系统中的 JRE 环境,选择你的JRE,然后点边上的 "Edit...", 会出现一个窗口(Edit JRE)

3.选中rt.jar文件的这一项:“c:\program files\java\jre_1.5.0_06\lib\rt.jar” ......

(1)Timer.schedule(TimerTask task,Date time)安排在制定的时间执行指定的任务。

(2)Timer.schedule(TimerTask task,Date firstTime ,long period)安排指定的任务在指定的时间开始进行重复的固定延迟执行.

(3)Timer.schedule(TimerTask task,long delay)安排在指定延迟后执行指定的任务.

(4)Timer.schedule(TimerTask ......

这里笔者介绍一种很常用,也比较专业的权限控制思路。这里用java语言描述,其实都差不多的。要换成其他的语言主,自己转一下就可以了。为了方便起见,我们这里定义a^b为:a的b次方。这里,我们为每一个操作设定一个唯一的整数值,比如:

删除A---0

修改A---1

添加A---2

删除B---3

修改B--� ......

一.怎样用socket进行客户与服务器通信

在Java中用socket进行客户/服务器之间的通信编程。Socket是两个实体之间进行通信的有效端点。通过socket可以获得源IP地址和源端口、终点IP地址和终点端口。用户可以将多个socket连入同一个端口,以便对于单个端口可以有多个连接。通过socket客户/服务器编程可以创建一个能被许多人使� ......

1) 具体类不是用来继承的。能被继承的一定是抽象类。

如果在一个原始的设计里,有两个具体类,类A和类B,类B是类A的子类,那么最好的修改方案是:

建立一个抽象(或者接口)C,然后让类A和类B成为类C的子类

2)抽象类应尽可能的拥有多的共同代码

一个对象从超类继承而来的代码,在不使用时不会造成对资源的� ......

fortran 和 java_JNA实现Java调用Fortran相关推荐

  1. 利用f2py实现python调用fortran

    利用f2py实现python调用fortran 利用f2py实现python调用fortran 参考文献 引言 最快的直接使用方式 生成.pyf文件的使用方法 在fortran源码中加入注释的使用方式 ...

  2. Ubuntu16,JAVA JNA调用fortran,Fortran编译器:Intel Fortran, Fortran77版本

    啊!神坑 首先一个Fortran程序, 两个subroutine,CALL_SUB()调用SUB(),因为在我的正常需求下需要这么调用,所以用这个做测试. 用intel fortran编译生成.so文 ...

  3. CUDA,C++,Java,Python,Fortran运行速度比较

    通过计算100万以内素数的运行时间比较这5种语言的运行速度. 每种语言运行30次,取平均值.由于python和fortran的运行速度和Java和C++运行差距过大,python只计算了3次,Fort ...

  4. C++,Java,Python,Fortran到底哪个更快?

    在<C++的速度比Java快2.1%:来自计算100万以内质数的实验数据对比>这篇文中比较了C++和Java的速度,现在接着用同样的办法通过算1000000以内的质数来比较python和f ...

  5. fortran语言和python_如何在Fortran中调用Python

    Python是机器学习领域不断增长的通用语言.拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch.气候模式通常是使用Fortran实现的.那么我们应该将基于Py ...

  6. oracle sql 调用自定义函数_PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)...

    PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)​mp.weixin.qq.com https://www.zhihu.com/video/12422083467175 ...

  7. C/C++调用Fortran的使用说明

    C/C++调用Fortran的使用说明 [日期:2010-11-22] 来源:C/C++ 作者:C/C++ [字体:大 中 小] 这里将详细介绍一下在C++中如何调用用Fortran语言编写函数的问题 ...

  8. python fortran混合编程_python调用fortran模块

    在python中调用fortran代码,要用到f2py这个程序.它的项目主页在此.现在该项目已经合并到numpy中了,先安装python再装好numpy,就可以使用f2py.不过对windows平台必 ...

  9. windows下python利用f2py调用Fortran

    目录 1.运行环境 2.测试实例 3.参考文章 Fortran(Formula Translation)是世界上第一个被正式推广使用的高级语言,其目前仍然是数值计算领域最重要的编程语言之一,虽然有ju ...

最新文章

  1. 基于神经网络的溶解度预测和回归分析
  2. Android 轮播Banner 实现 附代码
  3. 揭秘企业级web负载均衡完美架构
  4. 界面按钮太多 聊天机器人都快被玩坏了
  5. win7-elasticsearch环境搭建
  6. DevExpress 组件ToolBar、PopupMenu 使用有感
  7. php通配符是什么,通配符*和?有什么区别
  8. 阿里云重磅推出物联网设备身份认证Link ID²
  9. python真的那么火还是炒作_Python语言为什么会这么火?老男孩python
  10. PHP 运行 php-fpm 报错
  11. 贺利坚老师汇编课程37笔记:把六个字符串里的头一个字母改写成大写字母
  12. 湖南计算机专科学院分数线,湖南电子科技职业学院历年录取分数线
  13. Android studio真机运行失败,提示“软件包似乎无效” “应用程序安装异常(-15)”
  14. gitlab使用Mirroring repositories远程合并代码到其他仓库
  15. AAA认证 设置域 PPP认证 AAA默认域认证
  16. 使用百度云的图像识别
  17. 科技爱好者周刊(第 134 期):未来的游戏业比现在大100倍
  18. 路由器原理及路由协议
  19. 利用深度学习进行生存分析——DeepSuv模型小结
  20. android 表单ui_是的,ui表单可能太容易使用了

热门文章

  1. 斜面怎么计算机械效率,初中物理斜面的机械效率学习方法
  2. Cordova 拨打电话_Cordova 项目开启拨打电话
  3. 量化人才之战如何取胜
  4. Android音频通信--简单演示程序
  5. 罗克韦尔PLC程序,水处理自动化最高程序
  6. 手机计算机表白公式,表白公式数学公式
  7. 服务器虚拟kvm是什么意思,服务器 配置虚拟kvm功能
  8. 怎样更改图片格式?怎么转图片的格式?
  9. 最适合家用的洗地机哪个牌子好?家用洗地机品牌排行榜
  10. App自动化手机操作