java jni教程_java中JNI的简单使用方法介绍(详细)

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:27   905   0

本篇文章给大家带来的内容是关于JNI的简单使用方法介绍(详细),有一定的参考价值,有需要的朋友可以参考一下,希望对你有所帮助。

JNI可以让我们在java代码中调用本地库的功能。

下面记录一下JNI简单的使用方法

1、创建java端接口public class JNIIterface {

// 导入最终生成的dll文件

static {

System.loadLibrary("JNIDemo");

}

// 声明dll文件中实现的接口

public native int MyMethod();

public native int add(int x, int y);

}

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工程,具体步骤如下:

第一步:

7f09f4711aad3e90e30caf8cc09efe6f.png

第二步:

64cb9f808f5ba8d20d38500909278777.png

第三步:

c53e53e3f883edfdc8b5017cc6dbefa8.png

导入需要的头文件

将上面第二步生成的头文件,以及jdk根目录下include目录下的jni.h和

include的win32目录下的jni_md.h文件拷贝到工程目录下的头文件目录下

创建功能实现文件

在工程目录下源文件上右键,并点击添加-》类

3ce688bfe3f494c1c82dd67ed50ef940.png

并编写如下代码:#include "base_JNIIterface.h"

#include "jni.h"

#include

JNIEXPORT jint JNICALL Java_base_JNIIterface_MyMethod

(JNIEnv *, jobject){

printf("成功实现JNI测试DEMO");

return 0;

}

JNIEXPORT jint JNICALL Java_base_JNIIterface_add

(JNIEnv *, jobject, jint a, jint b){

return a + b;

}

4. 生成dll文件

在工程目录中的「解决方案」上右键,选择属性,然后如下图所示构成项目

6bc70a02e1bc16c61a388858e7c5db24.png

然后编译工程后,会在工程目录下的Release目录下成成dll文件

98e287414621ccfb39f7ce12d352bc13.png

5. 将dll文件配置到java工程

首先向dll文件放在java工程根目录下的lib目录下

然后按照如下步骤将dll文件作为Native Library添加进工程

913902bde0817826fa693e8daad8cb49.png

编辑上图所示的Native Library Location,然后在弹出的界面选择Native Library所在的文件夹:

ba43b571291a3d78ea3384c50d2c0974.png

6. 编写测试类,检证JNI是否成功应用public class HelloJNI {public static void main(String[] args) {

JNIIterface hw = new JNIIterface();

int t = hw.add(3, 7);

int s = hw.MyMethod();

System.out.println(t);

System.out.println(s);

}

}

运行后的测试结果如下:0

0

成功??JNI??DEMO

上面就是记录了使用JNI的最基本步骤。

对于如何使用已经写好的第三方dll文件的功能,比如系统的dll文件,还需要进行深入探索。

分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP