请先参考:JNI简介,也许就不再需要阅读本文。https://furzoom.blog.csdn.net/article/details/113730538
HelloWorld.java
class HelloWorld { private native void print(); public static void main(String[] args) { new HelloWorld().print(); } static { System.loadLibrary("HelloWorld"); } }
$ javac HelloWorld.java
会生成HelloWorld.class文件。
$ javah -jni HelloWorld
会生成HelloWorld.h文件。
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; }
在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文件。
$ java -Djava.library.path=. HelloWorld HelloWorld!
Windows、Linux、Mac OSX编译jni动态库
javah生成带有包名的头文件
vx搜:极客Furzoom,关注获取第一手资料。
(完)