Bonjour à tous !

Je ne suis pas sure que ce sois le bon forum.

J'essaye de calculer une FFT avec la librairie FFTW3 sous visualC++ 2008 express. J'ai récupéré un exemple que j'ai adapté mais qui me sort une System.AccessViolationException pour l'appel à fftw_execute(plan), fonction dans une dll.

J'avoue que je ne vois pas la solution et que tous les aides sont les bien venue !

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
36
 float* in;
   float* reOut;
   float* imOut;
 
  fftw_complex* spatial_repr;
   fftw_complex* frequency_repr;
   fftw_plan plan;
 
   spatial_repr = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*512);
   frequency_repr = (fftw_complex*)fftw_malloc(sizeof(fftw_complex)*512);
 
   /*On remplit la structure qui sera utilisée par fftw*/
   for(i=0;i<512;i++)
   {
      spatial_repr[i][0] = in[i];
      spatial_repr[i][1] =  0.0f;
   }
 
   /*on calcule le plan d'exécution*/
   fftw_plan_dft_2d(512, 512, spatial_repr, frequency_repr, FFTW_FORWARD, FFTW_ESTIMATE);
 
   /*on effectue la transformée de Fourier*/
   fftw_execute(plan);
 
   /*on retranscrit le résultat en 2 images, l'une représentant la partie réelle, l'autre
     la partie imaginaire*/
   for(i=0;i<512;i++)
      {
          reOut[i]=frequency_repr[i][0];
          imOut[i]=frequency_repr[i][1];
      }
 
   /*on détruit les objets*/
   fftw_destroy_plan(plan);
   fftw_free(spatial_repr);
   fftw_free(frequency_repr);
la variable "in" est chargé par

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
_CRT_FLOAT fltval;
 
	String^ fileName = "datafft";
	std::ifstream fichier( "datafft" );
	std::string ligne;
	int i;
 
	if ( fichier ) // ce test échoue si le fichier n'est pas ouvert
		{
 
			i = 1;
			float tmpin[512];
 
			while ( std::getline( fichier, ligne ) )
			{
            tmpin[i] =  _atoflt ( &fltval, (char*)ligne.c_str()) ;
			i++;
 
			}
 
			in = tmpin;
		}
Critiques, Remarques, aides sont les bienvenues.

MERCI !