码迷,mamicode.com
首页 > 编程语言 > 详细

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

时间:2015-05-22 23:53:33      阅读:186      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!