(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调用动态链接库相关推荐

  1. Java相对路径调用dll文件,VS项目中调用他人提供的.lib和.dll文件的用法(绝对路径和相对路径)...

     开发平台:vs2013 他人提供的动态库文件,包含 .lib 文件和 .dll 文件 在VS的工程中常常要设置头文件的包含路径和库文件的包含路径,当然你可以使用绝对路径,但是如果你这样设置了你只 ...

  2. labview如何加载库_LabVIEW如何方便地调用DLL文件

    转自:http://bbs.elecfans.com/jishu_469502_1_1.html LabVIEW调用DLL文件 LabVIEW支持通过调用DLL文件的方式与其它编程语言混合使用.比如, ...

  3. java jni dll路径_Java中Jni调用DLL文件试验

    Java中Jni调用DLL文件试验 下面是小编整理的Java中Jni调用DLL文件试验内容,希望可以为您带来帮助!更多内容请关注应届毕业生考试网! 所有文件均在E:\路径下. 安装jdk1.6.0_0 ...

  4. java中调用dll文件的两种方法

    https://www.cnblogs.com/huozhong/p/5830485.html JNA地址:http://blog.csdn.net/shendl/article/details/35 ...

  5. 关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序。

    关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. 参考文章: (1)关于java调用Dll文件的异常 %1 不是有效的 Win32 应用程序. (2)https://www. ...

  6. 关于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 ...

  7. java如何利用JNative调用dll文件

    下文参考自:http://blog.163.com/wex660@126/blog/static/2415306520103142363964/ 因为项目需要,用到了java调用dll文件中的方法.写 ...

  8. jar调用dll文件提示找不到指定的模块Unable to load library

    目录 问题描述 解决方案一 解决方案二 效果 补充说明 参考链接 问题描述 在Windows系统上,自己开发的需要使用JNA调用动态链接库dll文件的Swing项目(Java简易系统监视器system ...

  9. dll放在unity哪个文件夹下_unity中调用dll文件总结

    unity中调用dll文件总结 根据收集的资料,对unity中调用dll文件进行总结,目前常用的两种,在给出vs中封装dll文件的步骤. 一.调用c#中的dll文件 1.1封装dll文件 首先新建一个 ...

最新文章

  1. 如何用 Graylog 管理日志?- 每天5分钟玩转 Docker 容器技术(93)
  2. SQL安装时出现“以前的某个程序安装已在安装计算机上创建挂起的文件操作。运作安装程序之前必须重新启动计算机”...
  3. c语言的适当大小的子集,编译原理上机实验报告
  4. crontab 运行pyhon脚本
  5. 如何更sql sever数据库表的所有者
  6. 应用密码学的笑话之MD5+Salt不安全
  7. python scipy stats_Python Scipy stats.binned_statistic_dd()用法及代码示例
  8. 你为什么选择计算机应用专业,致新生!我为什么选择信息工程系
  9. VirtualLab专题实验教程-4.基于超表面的闪耀光栅
  10. java 什么时候使用内部类
  11. 日本财险容灾案例揭示小公司的容灾之道
  12. Hexo + yilia 主题实现文章目录
  13. Python - 至多包含两个字符的最大子串
  14. 点云配准算法ICP及其各种变体
  15. [uboot] (第五章)uboot流程——uboot启动流程
  16. python一键配置多个IP
  17. VMWare虚拟机安装WIN10系统【21H1长效稳定专业版】【图文详细教程】
  18. linux socket编程实例
  19. __unsafe_unretained的使用
  20. python猜谜语小游戏代码_树莓派趣学实战100例--网络应用+Python编程+传感器+服务器搭建...

热门文章

  1. 罗浩.ZJU | 如何看待 2020 届校招算法岗「爆炸」的情况?
  2. 当我们拿到数据进行建模时,如何选择更合适的算法?
  3. AI大厂迎最冷冬天?网传阿里拟裁员2万人,净利下滑高管离职
  4. 我,14岁初中生,从零开始拿到了Kaggle竞赛冠军
  5. 封闭、缺少代码审查,硕士刚毕业的“老”工程师揭露机器学习残酷现状!
  6. 【每日一算法】平衡二叉树
  7. Django项目准备和配置(MVT图解、创建项目和应用、更换解释器、安装应用、本地化、模板路径、项目中匹配urls、应用中匹配urls.py、准备视图、开启服务器、修改DATABAS配置信息)
  8. Numpy之N维数组-ndarray
  9. spring boot里面的三种配置文件。
  10. ACMNO.30 C语言-宏交换 定义一个带参的宏,使两个参数的值互换,并写出程序,输入两个数作为使用宏时的实参。输出已交换后的两个值。