前段時間一直學習c語言,就是為了能夠做JNI開發。
JNI(java Native interface),即java本地介面,是為了java編寫本地方法和jvm嵌入本地應用程式的標準應用程式介面。首要的目標是在給定的平臺上採用JAVA通過JNI呼叫本地方法,而本地方法是以庫檔案的形式存放的(在windows平臺上是DLL檔案形式,在UNIX機器上是SO檔案形式)。通過呼叫本地的庫檔案的內部方法,使JAVA可以實現和本地機器的緊密聯絡,呼叫系統級的各個介面方法。有的jvm來實現相容的二進位制編碼本地方法庫。
JNI開發環境:Windows2010 + Elipse + Visual Studio2013.
開發流程:
1、在eclipse新建一個java專案:
2、Test類編寫本地(native)方法
3、通過命令提示符
生成.h
標頭檔案:
1)在eclipse專案下的src 右鍵選擇Propertise,找到專案的src路徑,並且複製
2)使用cmd 開啟命令提示符
,進入專案的src目錄。
3)使用javah 生成.h
標頭檔案,注意的是使用javah命令需要為java,配置系統環境變數
然後才能使用javah生成標頭檔案
注意:這裡命令javah 類
需要的是類的完整類名(報名+類名)。否則找不到類.
回到eclipse專案,重新整理就可以看到剛剛生成的.h
標頭檔案。
4、在Visual Studio新建一個C的空專案,在原始檔新增.C
檔案。
5、將剛剛生成的.h
標頭檔案 和 java安裝目錄下的jni.h
、jni_md.h
檔案複製到專案的目錄下。
複製到專案目錄下
6、在Visual Studio平臺專案的標頭檔案中新增現有項,將剛剛複製的標頭檔案新增進來。
7、將jni.h
檔案中報錯的#include <jni_md.h>
改為#include "jni_md.h"
。
8、在Mytest.c
實現com_lwj_test_Test.h
函式.
9、配置dll檔案解決方案。專案右鍵,選擇屬性
配置屬性----->常規------>配置管理器
平臺------>新建x64
配置dll動態庫:
10、生成---------->生成解決方案,得到dll檔案
看到控制檯中已經有檔案輸出的資訊了,我們得到了DLL檔案了。
11、把dll檔案複製到eclipse專案的目錄下
12、載入動態庫,呼叫函式。
執行得到結果
上面就是JNI開發的整個基本流程。最終我們通過載入動態庫,呼叫JNI得到結果。