JNI 資料型態與傳送

JNI 資料型態與傳送

資料型態對應

Java JNI 的資料,是位於JVM之內,而C/C++的資料則位於JVM之外。Java傳到C/C++,必需有相互對應的型態。

基本資料型態

Java的 8 個基本資料型態
byte, short, int, long, float, double, char, boolean
分別對應到 C/C++的
jbyte, jshort, jint, jlong, jfloat, jdouble, jchar, jboolean

陣列

Java的 byte[], short[]…分別對應到C/C++的jbyteArray, jshortArray…..

其他

另外還有Java的object, Class, String, Throwable對應到jobject, jclass, jstring, jthrowable

詳細列表如下

Java

C/C++

備註

byte

jbyte

short

jshort

int

jint

long

jlong

float

jfloat

double

jdouble

char

jchar

boolean

jboolean

byte[]

jbyteArray

short[]

jshortArray

int[]

jintArray

long[]

jlongArray

float[]

jfloatArray

double[]

jdoubleArray

char[]

jcharArray

boolean[]

jbooleanArray

Object[]

jobjectArray

all Object

jobject

Class

jclass

String

jstring

Throwable

jthrowable

C/C++原本沒有 jbyte, jshort, ……這些型態的,怎麼會無端生出這些呢? 因為這些新型態在 jni.h標頭檔中重新被定義過了,所以一定要include

函數名稱對應

Java JNI

Java Jni中必需在companion object的init{}中先載入函數庫,然後再宣告外部函數名稱。外部函數的修飾子在Kotlin是 external, 在Java是使用native,如下所示

🔒 底下內容僅限會員閱讀。

立即登入

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *