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