使用fftw库时,C ++代码不会运行

时间:2017-11-09 02:41:09

标签: c++ eclipse mingw fftw

我正在尝试使用fftw库(link to FFTW documentation)实现DFT。

所有库都已正确链接,项目构建得很好。但是,在调用fftw库中的任何函数时,代码都不会运行。

#include <iostream>
#include <fftw3.h>

using namespace std;

int main() {

    int vectorSize = 100;
    cout << vectorSize << endl;

    fftw_complex vec[vectorSize], vecOut[vectorSize];

    for(int i = 0; i < vectorSize; i++) {
        vec[i][0] = i;
        vec[i][1] = 1;
    }

    // Call to function to create an FFT plan
    fftw_plan plan = fftw_plan_dft_1d(vectorSize, vec, vecOut, FFTW_FORWARD, FFTW_ESTIMATE);

    cout << "test" << endl;

    return 0;
}

如果我注释实例化fftw_plan的行,则代码输出100并按预期“测试”。据我所知,构建中没有问题。我真的找不到任何描述类似问题的帖子。

我在eclipse上运行它,使用MinGW和32位版本的预编译二进制文件可用于windows(download link)。

任何帮助都会非常感激:)

1 个答案:

答案 0 :(得分:0)

Fftw要求输入/输出为16字节对齐。在堆栈上声明数组时,无法保证这一点。所以你需要调用fftw_malloc或其他函数来分配数组。此外,您的代码仅创建计划但不执行它,因此不会对输入数据执行fft。