五月天青色头像情侣网名,国产亚洲av片在线观看18女人,黑人巨茎大战俄罗斯美女,扒下她的小内裤打屁股

歡迎光臨散文網(wǎng) 會員登陸 & 注冊

Java本機(jī)接口

2022-06-14 20:20 作者:CSDN首席噴子  | 我要投稿

Java本機(jī)接口(Java Native Interface,JNI)是供JVM調(diào)用本地動態(tài)鏈接庫中方法的機(jī)制,一些計算密集的代碼,可以轉(zhuǎn)移到C++實現(xiàn),速度會快很多,而一些硬件通信的功能也只能依靠JNI來實現(xiàn)。但是JNI會破壞Java的跨平臺特性,而且數(shù)據(jù)在JVM和本機(jī)之間的通信過程也會一定程度上拖慢速度。

1 ?DLL調(diào)用

Java代碼中,本地代碼的入口需要單獨放在一個類中,作為靜態(tài)函數(shù)使用,聲明為native方法,如:

然后編寫C++實現(xiàn)代碼:

jni.h(位于JDK安裝目錄下的include文件夾)中提供了JNI數(shù)據(jù)類型的定義。注意函數(shù)名必須為Java_類命名空間_類名_方法名的形式,第1、2個參數(shù)必須分別為JNIEnv和jobject類型,其它參數(shù)和Java代碼中的聲明保持一致。如果用C++編譯器,必須以C語言規(guī)則導(dǎo)出這些函數(shù)。

2 ?字符串

C/C++的字符串默認(rèn)是MBCS編碼的,而Java默認(rèn)是UTF-16編碼,且位于JVM的托管空間下,因此必須進(jìn)行一個轉(zhuǎn)換。如下代碼創(chuàng)建Java字符串:

而下面的代碼讀取從JVM中傳入的字符串。注意,傳入的字符串需要復(fù)制后才能使用,這個副本需要在本機(jī)代碼中釋放內(nèi)存!

3 ?數(shù)組

本機(jī)代碼中不能為Java數(shù)組申請內(nèi)存,只能修改其內(nèi)容,必須由JVM創(chuàng)建并傳入本機(jī)代碼。Java用jarray代表所有類型的數(shù)組,由于Java中所有的數(shù)據(jù)都是對象,所以jintArray和jarray實際上是同一個東西。首先使用JNIEnv::GetArrayLength獲取數(shù)組長度,然后用SetXXXArrayRegion設(shè)定XXX類型數(shù)組的值:


Java本機(jī)接口的評論 (共 條)

分享到微博請遵守國家法律
淄博市| 岳普湖县| 盐边县| 平度市| 鹤岗市| 阜康市| 九台市| 都匀市| 巴里| 梓潼县| 璧山县| 黄大仙区| 突泉县| 蓝田县| 洛阳市| 五寨县| 芒康县| 柘荣县| 甘德县| 乳山市| 玉树县| 伊通| 定远县| 墨竹工卡县| 和静县| 咸宁市| 军事| 奉新县| 同德县| 亳州市| 壤塘县| 崇文区| 伊春市| 莒南县| 井研县| 大埔区| 白朗县| 温泉县| 柏乡县| 双辽市| 瑞昌市|