JNI使用方法
2018-10-10 08:39:17来源:博客园 阅读 ()
JNI可以让我们在java代码中调用本地库的功能。
下面记录一下JNI简单的使用方法
- 创建java端接口
1 public class JNIIterface { 2 3 // 导入最终生成的dll文件 4 static { 5 System.loadLibrary("JNIDemo"); 6 } 7 8 // 声明dll文件中实现的接口 9 public native int MyMethod(); 10 11 public native int add(int x, int y); 12 }
2. 生成接口对应的C的头文件
上面创建的JNIIterface类,JNIIterface .class文件的路径:\JNIDemo\bin\base\JNIIterface .class
在工程目录下的bin目录下执行命令:javah -classpath . -jni base.JNIIterface
然后会在\JNIDemo\bin\目录下生成base_JNIIterface.h文件
3. 使用visual studio编写接口的实现
创建C工程,具体步骤如下:
第一步:
第二步:
第三部:
导入需要的头文件
将上面第二步生成的头文件,以及jdk根目录下include目录下的jni.h和
include的win32目录下的jni_md.h文件拷贝到工程目录下的头文件目录下
创建功能实现文件
在工程目录下源文件上右键,并点击添加-》类
并编写如下代码:
1 #include "base_JNIIterface.h" 2 #include "jni.h" 3 #include <stdio.h> 4 5 JNIEXPORT jint JNICALL Java_base_JNIIterface_MyMethod 6 (JNIEnv *, jobject){ 7 printf("成功实现JNI测试DEMO"); 8 return 0; 9 } 10 11 JNIEXPORT jint JNICALL Java_base_JNIIterface_add 12 (JNIEnv *, jobject, jint a, jint b){ 13 return a + b; 14 }
4. 生成dll文件
在工程目录中的「解决方案」上右键,选择属性,然后如下图所示构成项目
然后编译工程后,会在工程目录下的Release目录下成成dll文件
5. 将dll文件配置到java工程
首先向dll文件放在java工程根目录下的lib目录下
然后按照如下步骤将dll文件作为Native Library添加进工程
编辑上图所示的Native Library Location,然后在弹出的界面选择Native Library所在的文件夹:
6. 编写测试类,检证JNI是否成功应用
1 public class HelloJNI { 2 3 public static void main(String[] args) { 4 JNIIterface hw = new JNIIterface(); 5 int t = hw.add(3, 7); 6 int s = hw.MyMethod(); 7 System.out.println(t); 8 System.out.println(s); 9 } 10 }
运行后的测试结果如下:
10 0 成功??JNI??DEMO
上面就是记录了使用JNI的最基本步骤。
对于如何使用已经写好的第三方dll文件的功能,比如系统的dll文件,还需要进行深入探索。
参考文章:http://www.runoob.com/w3cnote/jni-getting-started-tutorials.html
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 迄今为止最硬核的「Java8时间系统」设计原理与使用方法 2020-03-12
- java中 Spring 定时器定时任务Quartz的正确使用方法集配置 2020-01-13
- String常用使用方法,1.创建string的常用3+1种方式,2.引用 2019-12-09
- 夯实Java基础系列4:一文了解final关键字的特性、使用方法, 2019-09-30
- java篇之JDBC原理和使用方法 2019-08-16
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash