【问题标题】:Add FFTW library to QT project将 FFTW 库添加到 QT 项目
【发布时间】:2016-11-20 13:16:27
【问题描述】:

我正在尝试将 FFTW 库添加到我的 QT 项目中。我从page 下载了fftw-3.3.5-dll64.zip。

然后我解压它,并将所有文件复制到“c:\fftw”目录。 在我的项目设置中,我添加了如下所示的行

INCLUDEPATH += "c:\fftw"
LIBS += -L "c:\fftw" -lfftw3-3 

然后,在我的 MainWindow.h 中,我将它包含在下面

#include <fftw/fftw3.h>

很遗憾,我无法重建我的项目。我有以下错误:

error: C1083: Cannot open include file: 'fftw/fftw3.h': No such file or directory

你有什么想法我应该怎么做吗? “c:\fftw”目录下的文件列表。

 Directory of c:\fftw

2016-11-20  14:15    <DIR>          .
2016-11-20  14:15    <DIR>          ..
2016-07-30  22:38           400˙306 bench.exe
2016-07-30  22:42           411˙177 benchf.exe
2016-07-30  22:44           380˙107 benchl.exe
2016-07-30  20:21            18˙342 COPYING
2016-07-30  20:21               863 COPYRIGHT
2016-07-30  22:38           184˙625 fftw-wisdom.exe
2016-07-30  22:44             2˙519 fftw3.f
2016-07-30  22:44            55˙850 fftw3.f03
2016-07-30  22:44            18˙517 fftw3.h
2016-07-30  22:44            27˙592 fftw3l.f03
2016-07-30  22:44            26˙291 fftw3q.f03
2016-07-30  22:42           184˙732 fftwf-wisdom.exe
2016-07-30  22:44           184˙732 fftwl-wisdom.exe
2016-07-30  22:44            24˙067 libfftw3-3.def
2016-07-30  22:38         2˙712˙765 libfftw3-3.dll
2016-07-30  22:44            24˙985 libfftw3f-3.def
2016-07-30  22:42         2˙772˙692 libfftw3f-3.dll
2016-07-30  22:44            14˙465 libfftw3l-3.def
2016-07-30  22:44         1˙247˙967 libfftw3l-3.dll
2016-11-20  14:15                 0 lista.txt
2016-07-30  20:21            22˙670 NEWS
2016-07-30  20:21             1˙827 README
2016-07-30  22:44             2˙079 README-bench
2016-07-30  22:44             1˙293 README-WINDOWS
              24 File(s)      8˙720˙463 bytes
               2 Dir(s)  17˙799˙467˙008 bytes free

【问题讨论】:

    标签: c++ qt dll fftw


    【解决方案1】:

    在我看来,应该更正包含。 由于您已经将 INCLUDEPATH 设置为 c:\fftw 您应该使用

    #include <fftw3.h>
    

    不指定子目录。 除非你想反其道而行之。

    编辑: 根据Qt documentation 中的示例,您还可以尝试将反斜杠更新为路径中的斜杠。但是,就我在我的环境中检查而言,它在这两种情况下都有效。

    编辑: 应作者要求添加带有 Qt 和 FFTW 的示例代码 - 问题未重现

    main.cpp:

    #include <QCoreApplication>
    #include <fftw3.h>
    
    int main(int argc, char *argv[])
    {
        QCoreApplication a(argc, argv);
        fftw_complex in[5];
    
        return a.exec();
    }
    

    项目文件:

    QT += core gui
    CONFIG += c++11
    
    TARGET = FFTW_test
    CONFIG += console
    CONFIG -= app_bundle
    
    TEMPLATE = app
    
    INCLUDEPATH += c:/Tools/fftw
    LIBS += -Lc:/Tools/fftw -lfftw3-3
    
    SOURCES += main.cpp
    

    在 Win8.1 上使用 Qt5.3 和来自作者问题的 FFTW 验证。

    【讨论】:

    • 这不是解决方案。我之前也查过。
    • 在这种情况下,我必须说我无法重现您的问题。我已经根据您的描述下载了添加到空项目中的 fftw,它对我来说很好用。
    • 您可以添加您的 .pro 文件吗?我现在做了空项目,但它仍然无法正常工作。你的系统是什么?哪个qt版本?
    • 添加了用于复制的代码。也许有帮助。
    【解决方案2】:

    好的,我做到了。看来是我的错。

    问题:

    我使用的是 MSVC2013 64 位编译器。在FFTW page 上有信息,我需要为 VS 运行 lib.exe,目录中有三个 def 文件。我试图这样做,但我无法做到。我遇到了一些 lib.exe 问题。

    lib /def:libfftw3-3.def
    lib /def:libfftw3f-3.def
    lib /def:libfftw3l-3.def
    

    解决方案:

    我已将 Qt 构建更改为 MinGW 32 位,并下载了 fftw 的 32 位版本。现在它运行良好

    感谢大家的帮助!

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多