1.了解JNI中JAVA类型与C/C++的映射关系JAVA类型本地类型JNI中自定义类型描述

intlongjint/jsizesigned 32 bits

long_int64jlongsigned 64 bits

bytesigned charjbytesigned 8 bits

booleanunsigned charjbooleanunsigned 8 bits

charunsigned shortjcharunsigned 16 bits

shortshortjshortsigned 16 bits

floatfloatjfloat32 bits

doubledoublejdouble64 bits

voidvoidvoidN/A

2.引用类型对照表

0_13103815358cp7.gif

JNI规范定义的函数签名信息格式如下:

(参数1类型标示参数2类型标示......参数n类型标示)返回值类型标示

实际上这些字符是与函数的参数类型一一对应的。

“()” 中的字符表示参数,后面的则代表返回值。例如”()V” 就表示 void Func();

“(II)V” 表示 void Func(int, int);

值得注意的一点是,当参数类型是引用数据类型时,

其格式是“L包名;”其中包名中的“.”换成“/”,

所以(Ljava/lang/String;Ljava/lang/String;)V 表示 void Func(String,String);

如果 JAVA 函数位于一个嵌入类,则用$作为类名间的分隔符。

例如 “(Ljava/lang/String;Landroid/os/FileUtils$FileStatus;)Z”

VvoidvoidN/A

Zjbooleanboolean8 unsigned

Ijintint32

Jjlonglong64

Djdoubledouble64

Fjfloatfloat32

Bjbytebyte8

Cjcharchar16 unsigned

Sjshortshort16

[IjintArrayint[]

[FjfloatArrayfloat[]

[BjbyteArraybyte[]

[CjcharArraychar[]

[SjshortArrayshort[]

[DjdoubleArraydouble[]

[JjlongArraylong[]

[ZjbooleanArrayBoolean[]

Logo

魔乐社区(Modelers.cn) 是一个中立、公益的人工智能社区,提供人工智能工具、模型、数据的托管、展示与应用协同服务,为人工智能开发及爱好者搭建开放的学习交流平台。社区通过理事会方式运作,由全产业链共同建设、共同运营、共同享有,推动国产AI生态繁荣发展。

更多推荐