FFTW in Qt Creator



我试图制作一个程序,根据IQ数据计算FFTW。Windows 10 64位。Qt Creator 4.8.2基于Qt 5.12.2(MSVC 2015,32位(当我使用时程序崩溃了

fftw_plan_dft_1d(N, in, out, FFT_FORWARD, FFTW_ESTIMATE);

我下载了fftw-3.3.5-dll64和dll32,结果都一样。

.pro

INCLUDEPATH += $$PWD/fftw-3.3.5-dll32
QMAKE_LIBDIR += $$PWD/fftw-3.3.5-dll32
LIBS += $$PWD/fftw-3.3.5-dll32/ -llibfftw3-3
LIBS += $$PWD/fftw-3.3.5-dll32/ -llibfftw3f-3
LIBS += $$PWD/fftw-3.3.5-dll32/ -llibfftw3l-3

.cpp

include "fftw3.h"
int main()
{
int N;
fftw_complex *in, *out;
fftw_plan myPlan;
in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)* N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex)* N);

fftw_plan_dft_1d(N, in, out, FFT_FORWARD, FFTW_ESTIMATE);  //this line crashed the program.
fftw_execute(myPlan);
fftw_destroy_plan(myPlan);
fftw_free(in);
fftw_free(out);
}

我希望有人能帮助我。谢谢

这既与Windows无关,也与QtCreator无关。你必须正确地编写程序。

fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); //this line crashed the program.

这不是崩溃的线路。这条线很好。下一个会完全崩溃,因为你从未分配过myPlan

myPlan = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);

将更正您的问题。前提是您将N设置为合理的值。我相信你也应该至少设置in。当然,你想对内存中in的任何东西进行傅立叶变换。这是一件很酷的事情。:(

最新更新