【问题标题】:why functions from fftw dll are not working?为什么 fftw dll 中的函数不起作用?
【发布时间】: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。

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

【问题讨论】:

    标签: gcc gdb fftw


    【解决方案1】:

    从调试器中可以看到退出码3221225781,十六进制为0xC0000135。 If you look it up on MS-ERREF,表示“STATUS_DLL_NOT_FOUND”和“{Unable To Locate Component}此应用程序无法启动,因为未找到 %hs。重新安装应用程序可能会解决此问题。”

    应用程序可能找不到libfftw3-3.dll。您需要将其放在可执行文件的同一目录中,或者放在 one of the other DLL search paths 中。

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

    【讨论】:

      猜你喜欢
      • 2012-05-14
      • 2014-08-06
      • 2015-02-20
      • 2021-08-20
      • 2021-07-25
      • 2013-08-26
      • 2011-11-13
      • 2023-03-15
      • 2021-08-26
      相关资源
      最近更新 更多