我想在使用Eclipse(Kepler)和MinGW(gcc 4.7.2)的Windows 8系統上的C程序中使用FFTW .dll(v 3.3.3)。有我懷疑這兩個問題是與我的配置做:使用Eclipse和mingw限制fftw的數組大小?
- 小於977,程序運行一個數組的大小併產生 預期輸出;如果N> = 977,則程序崩潰而不輸出。
- 儘管與N < 977一起運行會給出預期的輸出,但調試給出的值完全不同。
任何人都可以指向正確的方向嗎?
代碼:
#include <stdio.h>
#include <stdlib.h>
#include <complexUtil.h>
#include <fftw3.h>
#define N 976
main()
{
fftw_complex *in, *out;
fftw_plan p;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
FILE* infile;
float value;
int i = 0;
// Populate input array from file
infile = fopen("testData.txt", "r");
for (i=0; i<N; i++) {
fscanf(infile, "%f", &value);
(*(in + i)) = value + 0.0i;
}
fclose(infile);
// Perform fft
p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p);
fftw_destroy_plan(p);
fftw_free(in); fftw_free(out);
// Debug output
printf("in\t\tout\n");
for (i=0; i<N; i++) {
printf("%f\t%f\n",
creal((fftw_complex)* (in + i)),
creal((fftw_complex)* (out + i)));
}
return(0);
}
編譯器調用:
gcc "-IC:\\Users\\Brian\\workspace\\psd\\src" "-IC:\\Users\\Brian\\workspace\\psd\\lib" "-includeC:\\Users\\Brian\\workspace\\psd\\src\\complexUtil.h" "-includeC:\\Users\\Brian\\workspace\\psd\\src\\fftw3.h" -O0 -g3 -Wall -c -fmessage-length=0 -o "src\\psd.o" "..\\src\\psd.c"
gcc "-LC:\\Users\\Brian\\workspace\\psd\\lib" -Wl,--stack,2048 -o psd.exe "src\\psd.o" -lfftw3-3
正常輸出:
in out
0.188000 348.455000
0.000000 29.738027
0.021000 -88.468551
0.021000 16.764387
0.021000 -48.056287
...
調試輸出:
in out
-2656984258037080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000 -2656984258037080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
-2656984258037080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000 -2656984258037080400000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.000000
...
還有一個症狀:在調試模式下沒有輸出顯示,因爲我正在逐步執行,直到通過輸出循環進行一定次數的迭代。然後我得到一個輸出塊,Eclipse中的步進函數變成灰色。
***'int' ***'main()'... – 2013-07-13 10:21:08
@ H2CO3評論與問題無關。 – JackCColeman