在工作過程中术奖,需要使用 java 程序調(diào)用 C/C++ 代碼,此時轻绞,我們需要使用到JNI技術(shù)采记,以下為我初次使用JNI的案例過程。
首先政勃,我們需要做一些準(zhǔn)備工作唧龄,那么也就是電腦上的軟件安裝了,這里我工作上使用的電腦是windows的系統(tǒng)奸远,Mac系統(tǒng)的使用既棺,我將在后期進行更新。
1懒叛、軟件準(zhǔn)備:
windows系統(tǒng)
Visual Studio 2016
Eclipse
JDK8
2援制、開始我們的demo:
在開始demo前,我們先講解下使用JNI的步驟芍瑞,以下也將根據(jù)該步驟進行此demo晨仑。
步驟:
a) 編寫java代碼
b)生成C/C++語言的頭文件
c) 編寫C/C++代碼
d)生成C/C++共享庫(.dll文件)
e)編譯java代碼
f) 運行java程序
下面,我們來按照上面的步驟開始我們的demo拆檬。
2.a: 編寫java代碼
2.b: 生成C/C++語言的頭文件
注意:此處需要注意洪己,因為java類中有包名,所以我們在使用javah命令時需要注意其位置竟贯,并且在類名前需要添加上完整的包信息答捕。
2.c: 編寫C/C++代碼
此時,我們打開在2.b步驟生成的com_flygrk_ishare_JniDemo.h文件屑那,如下圖:
此時拱镐,我們需要使用C/C++代碼實現(xiàn)上圖中紅色的接口內(nèi)容信息艘款。具體內(nèi)容如下:
我們在這里實現(xiàn)了該方法打印“Hello Jni”。
2.d: 生成C/C++共享庫(.dll文件)
現(xiàn)在沃琅,我們來生成.dll庫文件哗咆,此時,我們需要使用Visual Studio2016益眉, 我們打開vs2016,新建一個Win32項目晌柬,其名稱需命名成2.a的java代碼引入的庫名稱。
然后郭脂,點擊【確認】【下一步】年碘,選擇DLL和空項目,如下圖所示:
之后展鸡,點擊【完成】按鈕屿衅。此時,我們需要將之前2.b步驟生成的.h頭文件放置到vs工程中的頭文件目錄下莹弊,將2.c步驟的.cpp代碼放置到vs工程中的源文件目錄下傲诵。如下圖:
注意:此時,如果你此處發(fā)現(xiàn).h或者.cpp文件箱硕,編譯器中顯示有錯誤拴竹,此時有可能是因為你的vs中沒有jni.h等頭文件信息,你需要去jdk目錄下將以下幾個文件放置到你的vs目錄下:
C:\Program Files\Java\jdk1.8.0_151\include 目錄下的 jni.h文件剧罩;C:\Program Files\Java\jdk1.8.0_151\include\win32目錄下的jawt_md.h和jni_md.h這三個文件放置到vs目錄C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\include下(此處為我本地的目錄栓拜,vs中需要安裝c++編譯環(huán)境)。
下面惠昔,我們來生成.dll文件幕与,我們在編譯前需要更改下dll文件適配的系統(tǒng),我的系統(tǒng)為win64位镇防,所以啦鸣,需要進行以下方式更改,如果是32位系統(tǒng)来氧,選擇x86即可诫给。
在配置好上述dll位數(shù)之后,我們開始編譯生成dll文件啦扬。步驟如下圖:
編譯生成結(jié)果為:
紅色框標(biāo)記的是生成的dll文件的位置中狂。我們?nèi)ミ@個目錄下拿到這個dll文件,復(fù)制到j(luò)ava項目下:
2.e: 編譯java代碼
如果使用編譯器扑毡,則此步驟可以忽略
2.f 運行java程序
以上胃榕,即為本人對第一次使用JNI的詳細步驟,如有問題瞄摊,請指教勋又。謝謝