bonjour
je travail sur un programme sous vc++ 6. j'ai cr�� une dll afin d'�ffectuer des calculs sur les valeurs d'un pointeurs stockant les niveaux de gris d'une image.
la premi�re fonction est une moyenne glissante. elle fonctionne tr�s bien dans mon programme client.
la deuxi�me fonction est une fonction de normalisation par rapport � la moyenne des valeurs des niveaux de gris. et l� �a bloque. je red�finis un pointeur vers la fonction Norme de ma dll dans mon programme client. mais ensuite mon programme ne veut pas faire la norme des valeurs. j'ai une erreur � l'execution du programme client. si j'execute en faisant d'abord la normalisation, j'ai une normalisation ab�rrante et un probl�me sur le filtre. je ne peux pas faire les options en meme temps (filtre + norme).
S'agit il d'un probl�me de pointeur ou de fonctions dans la dll ?
voici le code:
programme client (dialog based)
pour la dll
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 ... HMODULE HDll=LoadLibrary("TraitProfil.dll"); typedef double* Filtrage_func(double*,int); Filtrage_func *pFiltrage=(Filtrage_func*)GetProcAddress(hDll,"Filtrage"); typedef double* Norme_func(double*); Norme_func *pNorme=(Norme_func*)GetProcAddress(hDll,"Norme"); ///plus loin dans le code, une combo box appelle ces fonctions double *moy; moy = new double[1000]; if (stFiltre=="2") { moy=pFiltrage(m_pdData); m_cvDraw.AddDataBuffer(xxx,moy,1000,color); //fonction pour dessiner le graph contenant moy } double *norme; norme=new double[1000]; if(stNorme=="Moyenne") { norme=pNorme(moy); m_cvDraw.AddDataBuffer(xxx,norme000,color); //fonction pour dessiner le graph contenant norme c'est ici que ca ne fonctionne plus }
merci d'avance car je ne suis certainement pas tr�s claire
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
31
32
33
34
35 extern "C" double* Filtrage(double *a, int n) { double somme[1000]; double *moyenne; moyenne=new double[1000]; for (int i=0;i<1000;i++) { somme[0]=a[i]; for(int j=0;j<100;j++) { somme[1+j]=somme[j]+a[1+i+j]; } moyenne[i]=somme[i]/n; } return moyenne; } extern "C" double* Norme(double *c) { double sum; double av; double *b; b=new double[1000]; for(int i=0;i<999;i++) { sum += c[i]; } av=sum/1000; for(intk=0;k<999;k++) { b[k]=c[k]/av; } return b; }
Partager