Bonjour,
je suis désolé je ne trouve pas comment convertir un pointeur unsigned char* en int*.
Je dispose en fait d'un buffer unsigned char* que je récupère depuis une dll externe et qui donne le rendu d'une image c++.
Dans mon application principale, je voudrais faire passer cette image à un code Java en passant par une méthode JNI retournant un IntBuffer donc du coté C++ retournant un jint*.
Évidemment mes deux buffers sont initialisés à la même hauteur et largeur.
Comment donc copier les bonnes valeurs du buffer de la dll vers le buffer c++ pour java ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24 // on récupère le pointeur du IntBuffer : jobject javaBuffer jint *jniBuffer = (jint *)pEnv->GetDirectBufferAddress(javaBuffer); // on récupère le buffer de la dll unsigned char* dllBuffer = new unsigned char[height * width * (4 * sizeof(unsigned char))]; dllBuffer = getDllBuffer(width, height); // Premier Pb : cout << strlen((char*)jniBuffer ) << endl; // retourne 0 cout << strlen((char*)dllBuffer ) << endl; // retourne 3090 // Je suppose que ce sont les valeurs du premier nombre des buffers ? // 2eme Pb : memcpy(jniBuffer , dllBuffer , sizeof(unsigned char)*4*size); // ne fonctionne pas // autre méthode qui ne fonctionne pas jint *dllBuffer = new jint[width * height]; for(int y = 0; y < width; y++) for(int x = 0; x < height; x++) { jniBuffer [x + width * y] = (jint)dllBuffer [x]; }
Désolé c'est peut être une question très idiote mais qu'est ce que ça prend le chou !
merci
Partager