前面基本总结了常见的一些情况,包括对数组,字符串,对象的处理,基本上满足了效果。
具体的例子都在https://git.oschina.net/xpbob/jni.git
我用的环境是mingw,环境变了的话,就修改makefile吧
我还有没总结的部分:异常处理
异常处理其实和java对象处理差不多,你可以选择先new一个异常,然后调用throw方法
也可以通过throwNew这个方法,简单易用,只需要传递jclass和信息就行,推荐大家使用
我感觉写代码还是各自有各自的流程处理,java和c++的交互只在获取值和返回值的时候最好。
这里再说点细节:
类引用只在本地方法返回时有效,不要全局保存。但是java还提供了newGlobalRef来锁定,用完后调用deleteGlobalRef去除引用,但是这在设计上感觉并不是很好的方法,我建议还是需要的时候再获取一个吧。
关于文件:
java都是大端,英特尔架构cpu基本是小端,arm架构cpu基本是大端,用c++读取java文件时,只要不是char(这里的char就是java里的byte),必须考虑字节的翻转。
来源:oschina
链接:https://my.oschina.net/u/1463652/blog/601251