本文主要讲述如何在Mac开发环境下进行JNI开发。
首先编写好Java文件,示例程序主要示范了Java访问C,C访问Java静态与非静态域。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
|
在这个类的static代码块中加载的动态库是HelloJni
,类库的名字前面需要加lib
,在linux系统上面类库的扩展名为so
,在Mac系统上面扩展名为jnilib
,也就是说我们待会要生成的库的名字是libHelloJni.jnilib
。
执行javac HelloJni.java
生成class文件,执行javah HelloJni
生成HelloJni.h
头文件。其实生成的头文件都是有套路的,我们其实可以自己手动写。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 |
|
接下来进行c文件的编写,示例程序演示了C访问java静态与非静态域。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|
接下来就是编译c文件了,在HelloJni.h
中有#include <jni.h>
,编译的时候我们需要指出jni.h
的路径。在Mac系统中jni.h
在/System/Library/Frameworks/JavaVM.framework/Headers
目录下。
1 2 |
|
上面两条命令就生成了动态库。
然后我们再执行java HelloJni
就可以看到java和c交互的输出了:
1 2 3 4 5 6 |
|
Demo参见HelloJni。