
JNI
文章平均质量分 88
程序员-薯片
公众号【程序员薯片】
专注于:
1.AI+应用实战研究&开发。
2.码农中年危机自救指南研究&探索。
3.码农视觉的读书感悟&分享。
展开
-
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 · 3685 阅读 · 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 · 499 阅读 · 0 评论