JNI java 调c++动态库函数,多值回传及乱码问题
2015-05-22 23:00
267 查看
一,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';即可解决问题
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';即可解决问题
相关文章推荐
- Java JNI调用c++ dll文件,传递参数乱码问题
- 移动项目中JAVA与C/C++编解码相关的JNI动态库问题(.dll vs .so)
- android jni c/c++线程通过CallVoidMethod调用java函数出现奔溃问题
- JNI之c/c++返回中文给java 乱码问题以及java数组在c排序
- jni使用openssl AES256位加解密(cbc模式),匹配java后端服务器算法,解决末尾乱码问题
- 【转载整理】eclipse 开发c/c++、Java使用JNI调用C程序、生成64位dll动态链接库
- JAVA使用JNI调用C++动态链接库
- JAVA使用JNI调用C++动态链接库
- 解决ActiveMQ中,Java与C++交互中文乱码问题
- 解决ActiveMQ中,Java与C++交互中文乱码问题
- C++多重继承下的函数动态绑定问题分析
- java JNI 实例 实现调用c++函数
- 王学岗NDK系列(二):JNI:c /c++调用java属性和函数
- 【javaweb:Proxy&Filter】采用动态代理和过滤器解决request的全局乱码问题
- JNI引用C++dll若干问题总结-如何导出C++中的类成员函数
- 解决java动态生成html文档为乱码的问题
- C++中使用_asm汇编调用动态库函数的一点问题
- C/C++调用java---JNI常用函数
- Java/C/C++中方法(函数)传值和传引用的问题
- linux下使用jni实现c++调用java程序(2)找不到java类的问题