你需要保证你满足下面条件:
1. 使用 Eclipse 在 windows(32位操作系统)下学习。
2. 安装了MinGW,并且配置好,保证 gcc 可以使用。
一、新建项目
HelloJNI.java
package it.man.jni;
public class HelloJNI {
static {
System.loadLibrary("HelloJNI");
}
public native int getValue();
}
Main.java
package it.man;
import it.man.jni.HelloJNI;
public class Main {
public static void main(String[] args) {
HelloJNI jni = new HelloJNI();
jni.getValue();
}
}
二、编写 c 代码
这里分如下几个步骤
1、javah 产生头文件
这里要确保你的 eclipse 是保存后理解编译java代码的。不然手动编译你的 java 代码,主要目的是产生 class 文件
cd 到项目根目录(如这里是 E:\workspace\kepler\SUNJNIPrograms如这里是),即可执行
javah -classpath bin -d jni -jni it.man.jni.HelloJNI
随后在jni目录产生文件,目录结构如下
2、编写c
在 jni 目录新建一个 c 文件,这里命名为 HelloJNI.c
复制 it_man_jni_HelloJNI.h 里面的代码到 HelloJNI.c
#include <jni.h>
#include <stdio.h>
jint JNICALL Java_it_man_jni_HelloJNI_getValue(JNIEnv *env, jobject obj) {
int a = 7;
int b = 9;
printf("gatValue return: %d\n", a+b);
return a+b;
}
三、编译 c 文件,产生 dll 文件
cd 到 jni 目录(E:\workspace\kepler\SUNJNIPrograms\jni),执行
gcc -Wl,--add-stdcall-alias -I"D:\Program Files\Java\jdk1.6.0_45\include" -I"D:\Program Files\Java\jdk1.6.0_45\include\win32" -shared -o HelloJNI.dll HelloJNI.c
其中,D:\Program Files\Java\jdk1.6.0_45是jdk的安装路径。
这时目录结构如下
四、运行程序
在 eclipse 里面选择 run/run configurations/run java app,为 jvm 添加参数
注意:java.library.path 参数一定要设置,后面是 dll 的父目录。
正常的话,你会看到