java jni调用dll文件_Java通过jni调用动态链接库
(1)JNI简介
JNI是Java Native Interface的缩写,它提供了若干的API实现了Java和其他语言的通信(主要是C&C++)。从Java1.1开始,JNI标准成为java平台的一部分,它允许Java代码和其他语言写的代码进行交互。JNI一开始是为了本地已编译语言,尤其是C和C++而设计的,但是它并不妨碍你使用其他编程语言,只要调用约定受支持就可以了。使用java与本地已编译的代码交互,通常会丧失平台可移植性。但是,有些情况下这样做是可以接受的,甚至是必须的。例如,使用一些旧的库,与硬件、操作系统进行交互,或者为了提高程序的性能。JNI标准至少要保证本地代码能工作在任何Java 虚拟机环境。 简单的来说JNI就是方便了Java调用c,c++语言的函数;java通过JNI提供接口(头文件),c,c++实现这些函数供java调用。
()Java调用动态库的第一步:编写Java JNI接口代码如下
package com.xiaomo.jni;
public class JNIInterface {
static{
System.loadLibrary("JNITest");//这里的“JNITest”就是我们需要生成的dll本地动态链接库,书写库名就可以了,但是这个dll或则so文件必须在path的目录下,要不然会找不到
}
//这里我们需要给这个库提供接口函数
public native int add(int a,int b);//加法函数
public native int mis(int a,int b);//减法函数
}
通过java c命令生成JNIInterface.class文件如下图所示:
这个时候会在相应的文件夹目录下生成.class文件如下图所示:
(2)通过javah 命令将JNIInterface编译成.h头文件,具体编译的时候需要包名.类名,如下图所示
通过编译后出现一个com_xiaomo_jni_JNIInterface.h的头文件,这个将相当于Java通过JNI提供给动态链接库的头文件
(3)第三步当然是在编写本地动态库的时候引入这个头文件,实现该头文件的方法。将编写好的JNITest.dll文件房子啊JRE的bin目录下,或者是JDK的bin目录下
(4)第四步,在java端实例化JNIInterface这个类,调用这个类的方法。具体的会遇到很多的问题,大多都是路径问题,生成的dll文件是32位,64位的问题。
java jni调用dll文件_Java通过jni调用动态链接库相关推荐
- Java相对路径调用dll文件,VS项目中调用他人提供的.lib和.dll文件的用法(绝对路径和相对路径)...
开发平台:vs2013 他人提供的动态库文件,包含 .lib 文件和 .dll 文件 在VS的工程中常常要设置头文件的包含路径和库文件的包含路径,当然你可以使用绝对路径,但是如果你这样设置了你只 ...
- labview如何加载库_LabVIEW如何方便地调用DLL文件
转自:http://bbs.elecfans.com/jishu_469502_1_1.html LabVIEW调用DLL文件 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用.比如, ...
- java jni dll路径_Java中Jni调用DLL文件试验
Java中Jni调用DLL文件试验 下面是小编整理的Java中Jni调用DLL文件试验内容,希望可以为您带来帮助!更多内容请关注应届毕业生考试网! 所有文件均在E:\路径下. 安装jdk1.6.0_0 ...
- java中调用dll文件的两种方法
https://www.cnblogs.com/huozhong/p/5830485.html JNA地址:http://blog.csdn.net/shendl/article/details/35 ...
- 关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序。
关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. 参考文章: (1)关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. (2)https://www. ...
- 关于java调用Dll文件的异常 Native library (win32-x86-64/CtrlNPCDLL.dll) not found in resource pat
关于java调用Dll文件的异常 Native library (win32-x86-64/CtrlNPCDLL.dll) not found in resource pat 参考文章: (1)关于j ...
- java如何利用JNative调用dll文件
下文参考自:http://blog.163.com/wex660@126/blog/static/2415306520103142363964/ 因为项目需要,用到了java调用dll文件中的方法.写 ...
- jar调用dll文件提示找不到指定的模块Unable to load library
目录 问题描述 解决方案一 解决方案二 效果 补充说明 参考链接 问题描述 在Windows系统上,自己开发的需要使用JNA调用动态链接库dll文件的Swing项目(Java简易系统监视器system ...
- dll放在unity哪个文件夹下_unity中调用dll文件总结
unity中调用dll文件总结 根据收集的资料,对unity中调用dll文件进行总结,目前常用的两种,在给出vs中封装dll文件的步骤. 一.调用c#中的dll文件 1.1封装dll文件 首先新建一个 ...
最新文章
- 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
- SQL安装时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运作安装程序之前必须重新启动计算机”...
- c语言的适当大小的子集,编译原理上机实验报告
- crontab 运行pyhon脚本
- 如何更sql sever数据库表的所有者
- 应用密码学的笑话之MD5+Salt不安全
- python scipy stats_Python Scipy stats.binned_statistic_dd()用法及代码示例
- 你为什么选择计算机应用专业,致新生!我为什么选择信息工程系
- VirtualLab专题实验教程-4.基于超表面的闪耀光栅
- java 什么时候使用内部类
- 日本财险容灾案例揭示小公司的容灾之道
- Hexo + yilia 主题实现文章目录
- Python - 至多包含两个字符的最大子串
- 点云配准算法ICP及其各种变体
- [uboot] (第五章)uboot流程——uboot启动流程
- python一键配置多个IP
- VMWare虚拟机安装WIN10系统【21H1长效稳定专业版】【图文详细教程】
- linux socket编程实例
- __unsafe_unretained的使用
- python猜谜语小游戏代码_树莓派趣学实战100例--网络应用+Python编程+传感器+服务器搭建...
热门文章
- 罗浩.ZJU | 如何看待 2020 届校招算法岗「爆炸」的情况?
- 当我们拿到数据进行建模时,如何选择更合适的算法?
- AI大厂迎最冷冬天?网传阿里拟裁员2万人,净利下滑高管离职
- 我,14岁初中生,从零开始拿到了Kaggle竞赛冠军
- 封闭、缺少代码审查,硕士刚毕业的“老”工程师揭露机器学习残酷现状!
- 【每日一算法】平衡二叉树
- Django项目准备和配置(MVT图解、创建项目和应用、更换解释器、安装应用、本地化、模板路径、项目中匹配urls、应用中匹配urls.py、准备视图、开启服务器、修改DATABAS配置信息)
- Numpy之N维数组-ndarray
- spring boot里面的三种配置文件。
- ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。