Java使用JNI調用dll

 

一個Java程序調用固有方法,

1,第一步是寫出對固有方法及它的自變量進行聲明的Java代碼:   

 

 

在固有方法聲明的後面,跟隨有一個static代碼塊,它會調用System.loadLibrary()(可在任何時候調用它,但這樣做更恰當)

System.loadLibrary()將一個DLL載入內存,並建立同它的鏈接。DLL必須位於您的系統路徑,或者在包含了Java類文件的目錄中。根據具體的平臺,JVM會自動添加適當的文件擴展名。  

 

 

2.C頭文件生成器:javah  

現在編譯您的Java源文件,並對編譯出來的.class文件運行javah。

javah   -jni   ShowMsgBox  

javah會讀入類文件,併爲每個固有方法聲明在C或C++頭文件裏生成一個函數原型。下面是輸出結果——ShowMsgBox.h源文件    

 

 

從“#ifdef_cplusplus”這個預處理引導命令可以看出,該文件既可由C編譯器編譯,亦可由C++編譯器編譯。第一個#include命令包括

jni.h——一個頭文件,作用之一是定義在文件其餘部分用到的類型;JNIEXPORT和JNICALL是一些宏,它們進行了適當的擴充。  

3.實現自己的DLL

在VC++6.0新建工程選擇   Win32 Dynamic_Link Library,創建MsgImpl.cpp,並把ShowMsgBox.h包含到當前工程.以下爲MsgImpl.cpp的內容

 

編譯後在Debug生成MsgImpl.dll(把其放到Java類文件的目錄中或與位於您的系統路徑),即與ShowMsgBox.class同一個目錄,再編譯運行ShowMsgBox.java即可在控制檯輸出string=[Generated   with   JNI]

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章