你需要保證你滿足下麵條件:
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 的父目錄。
正常的話,你會看到