JNI:将字节从c ++传递给java [英] JNI: passing bytes from c++ to java

查看:102
本文介绍了JNI:将字节从c ++传递给java的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

HANDLE hFile = CreateFileA("C:\\myfile.zip", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
const int size = GetFileSize(hFile, NULL);
char* buffer = new char[size];
DWORD read;
ReadFile(hFile, buffer, size, &read, NULL);

jclass cls = ...;
jmethodID id = ...;

jbyteArray arr = env->NewByteArray(size);
env->GetByteArrayRegion(arr, 0, size, (jbyte*) buffer);
env->CallStaticVoidMethod(cls, id, arr);

问题是字节数​​组在java方面只包含空字节,有没有人知道为什么?

problem is that byte array contains just null bytes in java side, does anyone have idea why?

编辑:哦,我的不好应该是SetByteArrayRegion,对不起!现在全部工作:)

oh my bad it should be SetByteArrayRegion, sorry! all working now :)

推荐答案

我想你错过了一句话:

(*env)-> SetByteArrayRegion(env, result, 0, size, fill);

结账:

http://java.sun.com/developer/onlineTraining/Programming/JDCBook/jnistring .html

了解更多详情

这里也回答了类似的问题

also a similar question was answered here

如何退货从JNI到Java的数组?

这篇关于JNI:将字节从c ++传递给java的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆