jni调用C中方法char[]问题
C程序中定义了一个结构体
struct Gateway
{
char destIp[16];
int destPort;
char destMac[24];
};
C程序中有一个方法:turnOn(struct Gateway *gw);
那么我java中native方法做C程序包装时传什么样的参数能赋值给 结构体中的 char destIp[16] 呢??
是char[] 吗?
但是我看 java中是byte 对应 C中的 char 呀
小弟对jni和c不熟悉求大哥大姐解答!!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(5)
引用来自“WolfCS”的评论
实际上是一个在native层访问java层对象的问题,对吗?
可以将一个byte array传到native层,在native层中,可以通过GetByteArrayElements()函数,从java的byte array中获取到native层可用的jbyte数组,然后对这个数组进行操作。jbyte是一个typedef,类型为signed char。
将java的string对象传递到native层的话,可以通过env->GetStringUTFChars(text, NULL)函数来得到一个char数组,这个数组是字符串UTF-8编码的。
我在下面回复你了,求指导!
实际上是一个在native层访问java层对象的问题,对吗?
可以将一个byte array传到native层,在native层中,可以通过GetByteArrayElements()函数,从java的byte array中获取到native层可用的jbyte数组,然后对这个数组进行操作。jbyte是一个typedef,类型为signed char。
将java的string对象传递到native层的话,可以通过env->GetStringUTFChars(text, NULL)函数来得到一个char数组,这个数组是字符串UTF-8编码的。
JNI 里有专门针对字节数组操作的方法,不过我忘了是哪个了