为什么fftw dll中的函数不起作用



我有以下代码:

#include <stdio.h>
#include "S:fftwfftw3.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:fftwlibfftw3-3.dll

并执行生成的

test.exe

它执行时没有错误,但不显示printf消息。如果我使用gdb并简单地在那里运行程序,无论我尝试什么,gdb都会冻结并给出以下输出:

Starting program: S:NotesCnumericssrctest.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.dlls。

有人能帮忙吗?我完全不知道这是怎么回事。

从调试器中,您可以看到退出代码3221225781,它是十六进制的0xC0000135。如果你在MS-ERREF上查找它,它的意思是";STATUS_DLL_NOT_FOUND";以及";{无法找到组件}由于找不到%hs,此应用程序无法启动。重新安装应用程序可能会解决此问题">

应用程序可能找不到libfftw3-3.dll。您需要将它放在可执行文件的同一目录中,或者放在其他DLL搜索路径中。

如果您从资源管理器启动应用程序(双击(,它还应该告诉您该消息,包括如果您继续获得相同的退出代码,它找不到的DLL名称。

最新更新