zoukankan      html  css  js  c++  java
  • JNI使用方法

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

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

    1. 创建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文件的路径:JNIDemoinaseJNIIterface .class

        在工程目录下的bin目录下执行命令:javah -classpath . -jni base.JNIIterface

        然后会在JNIDemoin目录下生成base_JNIIterface.h文件

      3. 使用visual studio编写接口的实现

        创建C工程,具体步骤如下:

          第一步:

          

          第二步:

          

          第三部:

          

        导入需要的头文件

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

        include的win32目录下的jni_md.h文件拷贝到工程目录下(在创建的工程上面右键,然后点击倒数第二项就可以打开)

                         

        创建功能实现文件

          在工程目录下源文件上右键,然后点击【追加】-》【新项目】,创建一个cpp文件

        并编写如下代码:

     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

  • 相关阅读:
    【翻译二十二】java-并发之集合与原子变量
    【翻译二十一】java-并发之分拆和合并
    【翻译二十】-java线程池
    【翻译十九】-java之执行器
    【翻译十八】java-并发之锁对象
    【翻译十七】java-并发之高性能对象
    【翻译十六】java-固定对象的定义方法
    【翻译十五】-java并发之固定对象与实例
    情人节-程序员的乐趣
    【翻译十四】java-并发之保护块儿
  • 原文地址:https://www.cnblogs.com/MinChenSmile/p/9762151.html
Copyright © 2011-2022 走看看