C++代码在使用 fftw 库时无法运行

C++ code doesn't run while using fftw library

本文关键字:运行 fftw 代码 C++      更新时间:2023-10-16

我正在尝试使用 fftw 库实现 DFT(链接到 FFTW 文档)。

所有库都已正确链接,项目构建良好。但是,代码不会在调用 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 和可用于 Windows 的预编译二进制文件的 32 位版本(下载链接)。

任何帮助将不胜感激:)

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