jni数组使用及将C的char数组传递给Java

一、参考文章

假设有这样一个Java函数:

[java]  view plain   copy
  1. public int Send(char buffer[],int length)  
这个函数需要调用c/c++函数

[cpp]  view plain   copy
  1. int send(unsigned char *buf, int len)  

实现,那么用JNI该如何实现?


首先分析java的参数char buffer[ ],它在jni中的对应类型为jcharArray,说明从java传到jni的参数类型就是jcharArray。

jcharArray是一个jni数组类型,操作数组在jni中都有特定的函数,例如获取数据元素有:GetXXXArrayElements,XXX表示数据类型,可用如下数据类型替代:

jobjectArray;
jbooleanArray;
jbyteArray;
jcharArray;
jshortArray;
jintArray;
jlongArray;
jfloatArray;
jdoubleArray;

例如jcharArray的获取元素函数为:

[cpp]  view plain   copy
  1. jchar* GetCharArrayElements(jcharArray array, jboolean* isCopy)  

对应的释放函数为:

[cpp]  view plain   copy
  1. void ReleaseCharArrayElements(jcharArray array, jchar* elems,jint mode)  

另外还有获取数组指定范围元素的函数为:

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值