bonjour a tous forumer, je viens a vous apres de longues recherches sur le web en vain.
Je vous explique le probleme : je desire realiser une application de retouche d'images élémentaires avec une interface graphique en visual studio et une dll en c++. La partie visual no problem par contre en c++ j'ai choisi d'utiliser du code managé (apparement plus simple...)
J'arrive a creer mon image depuis vb en utilisant ma dll jarrive a appeler mes methodes c++ depuis vb MAIS je n'arrive pas a modifier l'image en c++ car il me sort une erreur enorme du style : memoire protégée en acces.
Je m'explique :
le probleme vient de l'acces a matrice dans la fonction affichage qui est la suivante:
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
25
26
27
28
29
30 //class pixel public class pixel { public: int r; int g; int b; pixel(void); pixel(int,int,int); void affichage(); }; //class monimage public ref class monimage { private: pixel*** matrice; int x; int y; int nbcouleurs; int type; public: monimage(void); monimage(System::String^); ~monimage(void); void affichage(); };
je peux faire cet affichage si je cree une matrice dans un bloc et que jappel dans ce meme bloc la fonction affichage()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 void monimage::affichage(){ for (int i=0;i<x;i++){ cout<<endl; for (int j=0;j<y;j++){ matrice[i][j]->affichage(); } } } void pixel::affichage(){ cout<<this->r<<" "<<this->g<<" "<<this->b<<" "; }
Mais des que j'appel la fonction affichage() avec une image cree en dehors du meme bloc.
PAF
dans pixel::affichage il me dit que this->r ou g ou b est protégé...
Hors grace au debuger vb j'arrive a voir letat de la matrice juste avant lappel et elle est bien construite c est juste que il ne veut pas acceder a ses attributs...
et je construit la matrice comme ceci :
quelqu'un aurait une idee??
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 char* p=(char*)malloc(sizeof(char)*3); i=0; j=0; int* val=(int*)malloc(sizeof(int)*3); matrice=new pixel**[x]; if(type==6){ for(int dx=0;dx<x;dx++){ matrice[dx] = new pixel*[y]; for(int dy=0;dy<y;dy++){ while(monstream.eof()!=true){ val[i]=monstream.get(); if(i==2){ //cout<<val[0]<<" "<<val[1]<<" "<<val[2]<<" "; matrice[dx][dy]=new pixel(val[0],val[1],val[2]); //matrice[dx][dy]->affichage(); i=0; } i++; } } } }
merci beaucoup!
Partager