JNI開發流程

鋸齒流沙發表於2017-12-26

前段時間一直學習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專案:

執行結果.png

2、Test類編寫本地(native)方法

執行結果.png

3、通過命令提示符生成.h標頭檔案: 1)在eclipse專案下的src 右鍵選擇Propertise,找到專案的src路徑,並且複製

執行結果.png

2)使用cmd 開啟命令提示符,進入專案的src目錄。

執行結果.png

3)使用javah 生成.h標頭檔案,注意的是使用javah命令需要為java,配置系統環境變數

執行結果.png

然後才能使用javah生成標頭檔案

執行結果.png

注意:這裡命令javah 類 需要的是類的完整類名(報名+類名)。否則找不到類.

執行結果.png

回到eclipse專案,重新整理就可以看到剛剛生成的.h標頭檔案。

4、在Visual Studio新建一個C的空專案,在原始檔新增.C檔案。

5、將剛剛生成的.h標頭檔案 和 java安裝目錄下的jni.hjni_md.h檔案複製到專案的目錄下。

執行結果.png

執行結果.png

複製到專案目錄下

執行結果.png

6、在Visual Studio平臺專案的標頭檔案中新增現有項,將剛剛複製的標頭檔案新增進來。

執行結果.png

執行結果.png

7、將jni.h檔案中報錯的#include <jni_md.h>改為#include "jni_md.h"

執行結果.png

執行結果.png

8、在Mytest.c實現com_lwj_test_Test.h函式.

執行結果.png

9、配置dll檔案解決方案。專案右鍵,選擇屬性

執行結果.png

配置屬性----->常規------>配置管理器

執行結果.png

平臺------>新建x64

執行結果.png

配置dll動態庫:

執行結果.png

10、生成---------->生成解決方案,得到dll檔案

執行結果.png

看到控制檯中已經有檔案輸出的資訊了,我們得到了DLL檔案了。

執行結果.png

11、把dll檔案複製到eclipse專案的目錄下

執行結果.png

12、載入動態庫,呼叫函式。

執行結果.png

執行得到結果

執行結果.png

上面就是JNI開發的整個基本流程。最終我們通過載入動態庫,呼叫JNI得到結果。

相關文章