記錄第一次使用JNI的過程

在工作過程中术奖,需要使用 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代碼


java程序

2.b: 生成C/C++語言的頭文件


生成頭文件

注意:此處需要注意洪己,因為java類中有包名,所以我們在使用javah命令時需要注意其位置竟贯,并且在類名前需要添加上完整的包信息答捕。
2.c: 編寫C/C++代碼
此時,我們打開在2.b步驟生成的com_flygrk_ishare_JniDemo.h文件屑那,如下圖:
com_flygrk_ishare_JniDemo.h

此時拱镐,我們需要使用C/C++代碼實現(xiàn)上圖中紅色的接口內(nèi)容信息艘款。具體內(nèi)容如下:


JniDemo.cpp

我們在這里實現(xiàn)了該方法打印“Hello Jni”。
2.d: 生成C/C++共享庫(.dll文件)
現(xiàn)在沃琅,我們來生成.dll庫文件哗咆,此時,我們需要使用Visual Studio2016益眉, 我們打開vs2016,新建一個Win32項目晌柬,其名稱需命名成2.a的java代碼引入的庫名稱。
vs中新建工程

然后郭脂,點擊【確認】【下一步】年碘,選擇DLL和空項目,如下圖所示:
新建工程

之后展鸡,點擊【完成】按鈕屿衅。此時,我們需要將之前2.b步驟生成的.h頭文件放置到vs工程中的頭文件目錄下莹弊,將2.c步驟的.cpp代碼放置到vs工程中的源文件目錄下傲诵。如下圖:
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位數(shù)之后,我們開始編譯生成dll文件啦扬。步驟如下圖:
編譯生成dll

編譯生成結(jié)果為:
編譯生成結(jié)果

紅色框標(biāo)記的是生成的dll文件的位置中狂。我們?nèi)ミ@個目錄下拿到這個dll文件,復(fù)制到j(luò)ava項目下:
復(fù)制dll文件到j(luò)ava工程中

2.e: 編譯java代碼
如果使用編譯器扑毡,則此步驟可以忽略
編譯java代碼

2.f 運行java程序
運行java程序

以上胃榕,即為本人對第一次使用JNI的詳細步驟,如有問題瞄摊,請指教勋又。謝謝

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末苦掘,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子楔壤,更是在濱河造成了極大的恐慌鹤啡,老刑警劉巖,帶你破解...
    沈念sama閱讀 210,978評論 6 490
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件挺邀,死亡現(xiàn)場離奇詭異,居然都是意外死亡跳座,警方通過查閱死者的電腦和手機端铛,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 89,954評論 2 384
  • 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來疲眷,“玉大人禾蚕,你說我怎么就攤上這事】袼浚” “怎么了换淆?”我有些...
    開封第一講書人閱讀 156,623評論 0 345
  • 文/不壞的土叔 我叫張陵,是天一觀的道長几颜。 經(jīng)常有香客問我倍试,道長,這世上最難降的妖魔是什么蛋哭? 我笑而不...
    開封第一講書人閱讀 56,324評論 1 282
  • 正文 為了忘掉前任县习,我火速辦了婚禮,結(jié)果婚禮上谆趾,老公的妹妹穿的比我還像新娘躁愿。我一直安慰自己,他們只是感情好沪蓬,可當(dāng)我...
    茶點故事閱讀 65,390評論 5 384
  • 文/花漫 我一把揭開白布彤钟。 她就那樣靜靜地躺著,像睡著了一般跷叉。 火紅的嫁衣襯著肌膚如雪逸雹。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,741評論 1 289
  • 那天云挟,我揣著相機與錄音峡眶,去河邊找鬼。 笑死植锉,一個胖子當(dāng)著我的面吹牛辫樱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播俊庇,決...
    沈念sama閱讀 38,892評論 3 405
  • 文/蒼蘭香墨 我猛地睜開眼狮暑,長吁一口氣:“原來是場噩夢啊……” “哼鸡挠!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起搬男,我...
    開封第一講書人閱讀 37,655評論 0 266
  • 序言:老撾萬榮一對情侶失蹤拣展,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后缔逛,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體备埃,經(jīng)...
    沈念sama閱讀 44,104評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,451評論 2 325
  • 正文 我和宋清朗相戀三年褐奴,在試婚紗的時候發(fā)現(xiàn)自己被綠了按脚。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 38,569評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡敦冬,死狀恐怖辅搬,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情脖旱,我是刑警寧澤堪遂,帶...
    沈念sama閱讀 34,254評論 4 328
  • 正文 年R本政府宣布,位于F島的核電站萌庆,受9級特大地震影響溶褪,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜践险,卻給世界環(huán)境...
    茶點故事閱讀 39,834評論 3 312
  • 文/蒙蒙 一竿滨、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧捏境,春花似錦于游、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,725評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至筷频,卻和暖如春蚌成,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背凛捏。 一陣腳步聲響...
    開封第一講書人閱讀 31,950評論 1 264
  • 我被黑心中介騙來泰國打工担忧, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人坯癣。 一個月前我還...
    沈念sama閱讀 46,260評論 2 360
  • 正文 我出身青樓瓶盛,卻偏偏與公主長得像,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子惩猫,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 43,446評論 2 348

推薦閱讀更多精彩內(nèi)容