JNI: passage d’octets de 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); 

Le problème est que le tableau d’octets contient juste des octets nuls dans le côté java, est-ce que quelqu’un a une idée pourquoi?

EDIT: oh mon dieu, ça devrait être SetByteArrayRegion, désolé! tous travaillent maintenant 🙂

Je pense que votre manque une ligne comme:

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

check-out :

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

pour plus de détails

aussi une question similaire a été répondu ici

Comment retourner un tableau de JNI à Java?