开发者

JNI: passing bytes from c++ to java

开发者 https://www.devze.com 2023-03-11 10:31 出处:网络
HANDLE hFile = CreateFileA(\"C:\\\\myfile.zip\", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL);
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);

problem is that byte array contains just null bytes 开发者_C百科in java side, does anyone have idea why?

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


I think your missing a line like :

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

check out :

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

for more details

also a similar question was answered here

How to return an array from JNI to Java?

0

精彩评论

暂无评论...
验证码 换一张
取 消