![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
JNI
文章平均质量分 88
林树杰
输入->输出,在coding和记录中成长。
“如果你不能很好的教会别人,那么你就没有掌握这个技能”
希望我的记录能够帮助大家在技术前进的路上少走一点弯路,贡献一份微薄的力量。
欢迎关注,一起成长!
展开
-
Android工程怎么调用C/C++代码(保姆级别,每一步截图+讲解)?
关于ReleaseByteArrayElements的最后一个参数,绝大部分场景使用0就OK,意思是他会把C/C++源码对这个变量所做的修改刷新回去给Java层。还有一个点要注意,就是Java层的byte是有符号的,可以是负数,C/C++层的unsigned char是无符号的。传入并使用对象类型的时候,记得用完立刻释放,不然有时候需要循环的业务逻辑会消耗掉JNI可以开辟的空间,听说最多是五百个对象。假如我们在CMake里面写了SHARED的话,编译之后,生成的是动态库,.so文件。原创 2023-12-12 14:52:25 · 2017 阅读 · 0 评论 -
Java有符号的byte传递给C/C++层的char/unsigned char会发生什么?
在C语言中,我们可以使用十六进制来表示一个byte,例如0x90表示十进制的144,即unsigned char类型中的一个值。在这个例子中,我们将整数144强制转换为unsigned char类型,它的二进制表示为10010000,即0x90。char类型,它将被截断为44,因为300的二进制表示为100101100,截断后的二进制表示为00101100,即十进制的44。可以看到,Java把byte赋值给C/C++层的时候,byte的有符号会自动转变为无符号。char类型,它将被截断为其最低的8位。原创 2023-11-30 14:50:17 · 333 阅读 · 0 评论