【发布时间】:2021-03-11 17:04:43
【问题描述】:
我有以下代码:
#include <stdio.h>
#include "S:\fftw\fftw3.h"
int main()
{
fftw_complex* in;
fftw_complex* out;
fftw_plan p;
in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex));
out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex));
p = fftw_plan_dft_1d(1, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
fftw_execute(p);
fftw_destroy_plan(p);
fftw_free(in);
fftw_free(out);
printf("test!\n");
return 0;
}
当我编译时
gcc -g .\test.c -o test S:\fftw\libfftw3-3.dll
并执行生成的
test.exe
它确实执行没有错误,但不显示 printf 消息。如果我使用 gdb 并在那里简单地运行程序,无论我尝试什么,gdb 都会冻结并只给出以下输出:
Starting program: S:\Notes\C\numerics\src\test.exe
[New Thread 8244.0x2a80]
[New Thread 8244.0x1668]
[New Thread 8244.0x4790]
[Thread 8244.0x1668 exited with code 3221225781]
这发生在我调用必须链接到 .dll 的函数的那一刻,如果我不这样做,一切都会正常。
我正在使用
gcc.exe (x86_64-win32-sjlj-rev0, 由MinGW-W64项目构建) 8.1.0
和
GNU gdb (GDB) 8.1,此 GDB 配置为“x86_64-w64-mingw32”。
来自 MingW64,我只是从主页下载了 fftw .dll。
有人可以帮忙吗?我完全不知道这是怎么回事。
【问题讨论】: