Java中使用JNI調用DLL
1 編寫范例文檔
public class TestNative{
private native int add(int x,int y);
public static void main(String[] args) {
TestNative hh = new TestNative();
int r = hh.add(30,20);
System.out.println("result = "+r);
}
static {
System.loadLibrary("DLL_0305");
}
}
其中
LoadLibrary中的DLL文件名稱可以隨便定.只要做好的動態(tài)鏈接庫改名成這個字符串就可以了.而native函數(shù)的來源就是該動態(tài)鏈接庫.
2. 做好該步準備以后,用javac TestNative.java生成.class.檢驗語法.
3. 語法檢查通過以后,用javah TestNative生成.h的C頭文件.
4. 打開VC++6.0,新建->; 工程 ->; win32 Dynamic-Link Library .在向導中選擇空工程.
5. 把剛才javah生成的那個頭文件加入工程 .然后 文件->;新建->;textFile 自己做一個.c文件.實現(xiàn)自己的native函數(shù).清單如下:
#include<jni.h>;
JNIEXPORT jint JNICALL Java_TestNative_add
(JNIEnv *ev, jobject obj, jint x, jint y)
{
return x+y;
}
備注:
A 其中的jni.h通常在 jdk\include\ 可以先拷貝到VC安裝目錄下的include目錄下.一勞永逸,以后可以方便使用JNI技術.
B 全部的數(shù)據(jù)類型需要考慮Java和VC的接口問題.用jint jstring 等.
C 函數(shù)名稱和自動生成的.h文件中規(guī)定的一致.命名規(guī)則是: Java_使用類_方法名
6 全編譯一下工程.
如果沒有出錯,則此時生成動態(tài)鏈接庫成功.
把動態(tài)鏈接庫拷貝到TestNative.java所在的目錄上.
7 運行java TestNative看結果吧.