OSX上进行JNI开发的流程及命令

xiaoxiao2021-02-28  22

请先参考: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. 参考:

 

Windows、Linux、Mac OSX编译jni动态库

javah生成带有包名的头文件

vx搜:极客Furzoom,关注获取第一手资料。

(完)  

转载请注明原文地址: https://www.6miu.com/read-2350034.html

最新回复(0)