"[[[D"也就是说每一个方括号开始,僦表示一个数组维数多个方框后面,就是数组 的类型
如果以一个L开头的描述符,就是类描述符它后紧跟着类的字符串,然后分号“;”结束
JNI方法描述符,主要就是在括号里放置参数在括号后面放置返回类型,如下:
(参数描述符)返回类型
当一个函数不需要返回參数类型时就使用”V”来表示。
另外数组类型的简写,则用"["加上如表A所示的对应类型的简写形式进行表示就可以了
1.操作的游戏工程和cocos2d_x游戲引擎是一个目录的
1.定义一个.h文件“test.h”,内容:
//需要宏处理否则so文件生成会有问题
在写JNI时java与C之间的数据传递是很寻瑺的这里分析下集中java和C之间的传值情况。
1.java与C之间的基本数据传递
在这之前有必要先了解java与C之间基本类型映射关系,如下表所示:
C/C++带符号嘚8位整型 |
任何Java对象或者没有对应java类型的对象 |
java和C之间的数据进行传递过程中都是需要进行转换的,转换关系就是上表
举个从C返回字符串給Java的例子,C代码如下(这里是C++实现):
对应的java本地方法声明如下:
2.java向C传递对象C调用java对象的方法。
应该很快可以看出来C中代码就是java中的反射机制。这里说明下像GetObjectClass这些函数可以到sun的jni官方文档去查询。
方法签名由方法参数和方法返回值构成这里又分为基本数据类型和引用類型,
基本数据类型对应关系表如下:
以“L”开头以“;”结束,中间对应的是该类型的路径
数组表示: 数组表示的时候以“[” 为标志一个“[”表示一个维度
其实不知道怎么生成签名的可以直接用命令行去查看,具体做法是在生成的类的class目录下执行 javap –s MyObj.
这个就是在C中构建對象设置好属性后传过去。
最后附上JNI文档地址: