Java中使用JNI調用DLL
1 編寫(xiě)范例文檔
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文件名稱(chēng)可以隨便定.只要做好的動(dòng)態(tài)鏈接庫改名成這個(gè)字符串就可以了.而native函數的來(lái)源就是該動(dòng)態(tài)鏈接庫.
2. 做好該步準備以后,用javac TestNative.java生成.class.檢驗語(yǔ)法.
3. 語(yǔ)法檢查通過(guò)以后,用javah TestNative生成.h的C頭文件.
4. 打開(kāi)VC++6.0,新建->; 工程 ->; win32 Dynamic-Link Library .在向導中選擇空工程.
5. 把剛才javah生成的那個(gè)頭文件加入工程 .然后 文件->;新建->;textFile 自己做一個(gè).c文件.實(shí)現自己的native函數.清單如下:
#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技術(shù).
B 全部的數據類(lèi)型需要考慮Java和VC的接口問(wèn)題.用jint jstring 等.
C 函數名稱(chēng)和自動(dòng)生成的.h文件中規定的一致.命名規則是: Java_使用類(lèi)_方法名
6 全編譯一下工程.
如果沒(méi)有出錯,則此時(shí)生成動(dòng)態(tài)鏈接庫成功.
把動(dòng)態(tài)鏈接庫拷貝到TestNative.java所在的目錄上.
7 運行java TestNative看結果吧.
聯(lián)系客服