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 :
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();
};
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
 
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<<" ";
}
je peux faire cet affichage si je cree une matrice dans un bloc et que jappel dans ce meme bloc la fonction affichage()
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 :
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++;
				}
			}
		}
	}
quelqu'un aurait une idee??
merci beaucoup!