0%

JNI

文章字数:250,阅读全文大约需要1分钟

jni(java native interface)允许java和本地方法交互,但是会丧失平台的可移植性。

实现步骤

  1. 编写java native方法
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public class HelloWorld {
    public native void displayHelloWorld();//所有native关键词修饰的都是对本地的声明
    static {
    System.loadLibrary("hello");//载入本地库
    }
    public static void main(String[] args) {
    //调用
    new HelloWorld().displayHelloWorld();
    }
    }
  2. 使用javac编译java类
    1
    javac HelloWorld.java
  3. 使用javah生成头文件
    1
    javah HelloWord
  4. 本地方法实现
    编写和javah生成的头文件声明方法相同的方法。
    HelloWorldImpl.cpp
    1
    2
    3
    4
    5
    6
    7
    8
    9
    # include "jni.h"
    # include "HelloWorld.h"
    # include "stdio.h"
    JNIEXPORT void JNICALL
    Java_HelloWorld_displayHelloWorld(JNIEnv*env,jobject obj)
    {
    printf("hello");
    return;
    }
    生成dll,重命名为hello.dll移动到java目录下。
    调用
    1
    2
    3
    static {
    System.loadLibrary("hello");//载入本地库
    }