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.

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]; 
  }
Comment donc copier les bonnes valeurs du buffer de la dll vers le buffer c++ pour java ?

Désolé c'est peut être une question très idiote mais qu'est ce que ça prend le chou !

merci