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

来源:互联网 发布:如何获取阿里云优惠码 编辑:程序博客网 时间:2024/05/24 00:47


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=. HelloWorldHelloWorld!

7. 参考:

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

javah生成带有包名的头文件
(完)


原创粉丝点击