请先参考:JNI简介,也许就不再需要阅读本文。https://furzoom.blog.csdn.net/article/details/113730538
1. 声明native方法
HelloWorld.java
class HelloWorld {
private native void print();
public static void main(String[] args) {
new HelloWorld().print();
}
static {
System.loadLibrary("HelloWorld");
}
}
2. 编译Java文件
$ javac HelloWorld.java
会生成HelloWorld.class文件。
3. 生成native方法的头文件
$ javah -jni HelloWorld
会生成HelloWorld.h文件。
4. 实现本地方法
HelloWorld.c
#include <jni.h>
#include <stdio.h>
#include "HelloWorld.h"
JNIEXPORT void JNICALL Java_HelloWorld_print(JNIEnv *env, jobject obj)
{
printf("Hello World!\n");
return;
}
5. 编译生成动态库文件
在OSX下为jnilib文件。
$ gcc -I/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/include/ -I/Library/Java/JavaVirtualMachines/jdk1.8.0_112.jdk/Contents/Home/include/darwin/ -c HelloWorld.c
$ gcc -dynamiclib -o libHelloWorld.jnilib HelloWorld.o
会生成HelloWorld.o和libHelloWorld.jnilib文件。
6. 执行
$ java -Djava.library.path=. HelloWorld
HelloWorld!
7. 参考:
vx搜:极客Furzoom,关注获取第一手资料。
(完)