【发布时间】:2018-04-21 22:14:26
【问题描述】:
我正在尝试使用 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 和“test”。据我所知,构建中没有问题。我真的找不到任何描述类似问题的帖子。
我在 Eclipse 上运行它,使用 MinGW 和可用于 Windows (download link) 的预编译二进制文件的 32 位版本。
任何帮助将不胜感激:)
【问题讨论】:
-
如果在调试器上点击 Pause 会发生什么?代码是否仍在运行,还是在调用
fftw_plan_dft_1d时崩溃。您是否尝试过其他 fftw 调用,更简单的调用? documentation I found 建议调用fftw_malloc,所以我不确定在堆栈上创建fftw_complex是否会导致问题。我建议尝试一个更简单的函数调用,看看它是否有效。 -
调试器不按顺序终止,并且永远不会到达我在代码中放置的任何断点。
-
只是想重新迭代,代码本身并没有“崩溃”。它不输出任何东西,我不确定它是否在后台工作(我猜是,因为没有错误)