首页 > 编程语言 > 详细

JNI java 调c++动态库函数,多值回传及乱码问题

时间:2015-05-22 23:50:50      阅读:342      评论:0      收藏:0      [点我收藏+]

一,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‘;即可解决问题

JNI java 调c++动态库函数,多值回传及乱码问题

原文:http://www.cnblogs.com/tonyliult/p/4523446.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!