fortran 和 java_JNA实现Java调用Fortran
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相关推荐
- 利用f2py实现python调用fortran
利用f2py实现python调用fortran 利用f2py实现python调用fortran 参考文献 引言 最快的直接使用方式 生成.pyf文件的使用方法 在fortran源码中加入注释的使用方式 ...
- Ubuntu16,JAVA JNA调用fortran,Fortran编译器:Intel Fortran, Fortran77版本
啊!神坑 首先一个Fortran程序, 两个subroutine,CALL_SUB()调用SUB(),因为在我的正常需求下需要这么调用,所以用这个做测试. 用intel fortran编译生成.so文 ...
- CUDA,C++,Java,Python,Fortran运行速度比较
通过计算100万以内素数的运行时间比较这5种语言的运行速度. 每种语言运行30次,取平均值.由于python和fortran的运行速度和Java和C++运行差距过大,python只计算了3次,Fort ...
- C++,Java,Python,Fortran到底哪个更快?
在<C++的速度比Java快2.1%:来自计算100万以内质数的实验数据对比>这篇文中比较了C++和Java的速度,现在接着用同样的办法通过算1000000以内的质数来比较python和f ...
- fortran语言和python_如何在Fortran中调用Python
Python是机器学习领域不断增长的通用语言.拥有一些非常棒的工具包,比如scikit-learn,tensorflow和pytorch.气候模式通常是使用Fortran实现的.那么我们应该将基于Py ...
- oracle sql 调用自定义函数_PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)...
PSCAD入门教程(第7节):怎样调用fortran编写的自定义函数?(附模型)mp.weixin.qq.com https://www.zhihu.com/video/12422083467175 ...
- C/C++调用Fortran的使用说明
C/C++调用Fortran的使用说明 [日期:2010-11-22] 来源:C/C++ 作者:C/C++ [字体:大 中 小] 这里将详细介绍一下在C++中如何调用用Fortran语言编写函数的问题 ...
- python fortran混合编程_python调用fortran模块
在python中调用fortran代码,要用到f2py这个程序.它的项目主页在此.现在该项目已经合并到numpy中了,先安装python再装好numpy,就可以使用f2py.不过对windows平台必 ...
- windows下python利用f2py调用Fortran
目录 1.运行环境 2.测试实例 3.参考文章 Fortran(Formula Translation)是世界上第一个被正式推广使用的高级语言,其目前仍然是数值计算领域最重要的编程语言之一,虽然有ju ...
最新文章
- 基于神经网络的溶解度预测和回归分析
- Android 轮播Banner 实现 附代码
- 揭秘企业级web负载均衡完美架构
- 界面按钮太多 聊天机器人都快被玩坏了
- win7-elasticsearch环境搭建
- DevExpress 组件ToolBar、PopupMenu 使用有感
- php通配符是什么,通配符*和?有什么区别
- 阿里云重磅推出物联网设备身份认证Link ID²
- python真的那么火还是炒作_Python语言为什么会这么火?老男孩python
- PHP 运行 php-fpm 报错
- 贺利坚老师汇编课程37笔记:把六个字符串里的头一个字母改写成大写字母
- 湖南计算机专科学院分数线,湖南电子科技职业学院历年录取分数线
- Android studio真机运行失败,提示“软件包似乎无效” “应用程序安装异常(-15)”
- gitlab使用Mirroring repositories远程合并代码到其他仓库
- AAA认证 设置域 PPP认证 AAA默认域认证
- 使用百度云的图像识别
- 科技爱好者周刊(第 134 期):未来的游戏业比现在大100倍
- 路由器原理及路由协议
- 利用深度学习进行生存分析——DeepSuv模型小结
- android 表单ui_是的,ui表单可能太容易使用了