jni java c++ 参数传递问题解决

一,问题 
1.多参数回传 
2.参数传递出现乱码 

二,解决 
1.使用byte[]数组传入c++,在生成的头文件里就会变成jbyteArray 类型 
例如,java 中参数:byte[]account,头文件里参数变成jbyteArray account, 
通过c++修改完account的值后,java要获取该值,直接使用 
jbyte* jbAccount = (env)->GetByteArrayElements(env, account, 0); 
char* szAccount = (char*)jbAccount; 
指针的地址并不是account的地址,最后赋下值才行 
env->SetByteArrayRegion(account,0,strlen(szAccount),jbyte* jbAccount); 

2.String.getBytes()生成的byte数组传入c++后,在字符串的结尾会有多余乱码, 
解决办法是,传入byte数组时,把数组的长度length,也传入c++, 
令接受的数组strBuff[length]='\0';即可解决问题

posted on 2012-12-10 20:01  为梦飞翔  阅读(570)  评论(0编辑  收藏  举报

导航