如何让FFTW ++在Windows上工作? (傻瓜)

我正在使用Windows 10和Visual Studio 2015.在C ++中,我需要获取应用滤镜的图像的傅立叶变换。 看来FFTW ++是这个理想的解决scheme,但是我不能把它编译出来,而且它让我很生气。 我对编程比较陌生,所以我不知道这是多么的尴尬。

我使用Visual Studio中的NuGet函数来获取FFTW库。 由于在NuGet上找不到它,我从下面的链接下载了FFTW +的内容: https ://sourceforge.net/projects/fftwpp/我将下载的内容复制到项目文件夹中,并将头文件包含在解决scheme资源 但是它没有编译,抛出许多奇怪的错误(例如:在seconds.h中,它表示某些函数获取时区已经过时,而在fftww ++。h中则表示std :: max是非法的) 。

所以在看到这不起作用后,我回到了FFTW网站,并尝试使用Windows安装指南。 http://www.fftw.org/install/windows.html我下载了64位版本,我完全不知道如何做库导入的事情,甚至是什么。 i.imgur.com/Qs7mFQT.png这是我得到的,我完全失去了。

我怎样才能编译? 如果可以的话,请尽可能详细的给我解释一下如何使用这个东西,我可能是愚蠢的,但我实际上不知道发生了什么事情,在Google上找不到任何教程。

获得64bit预编译的FFTW 3.3.5 Windows DLL

  1. 从fftw-3.3.5-dll64.zip下载
  2. 解压该文件。

创建导入库 (.lib文件)

  1. 官方的FFTW说明在这里 。
  2. 有关如何将DLL链接到Visual Studio C ++程序的背景,请参阅MSDN文章将可执行文件链接到DLL,特别是关于隐式链接的部分很有帮助。
  3. 在解压缩位置,README-WINDOWS也是有帮助的。
  4. 打开Visual Studio开发人员命令提示符

    • 导航到开始 – > 所有应用程序 – > Visual Studio 2015 – > 开发人员命令提示符
    • 在我的机器上,位置是C:\ Program Files(x86)\ Microsoft Visual Studio 14.0 \ Common7 \ Tools \ VsDevCmd.bat
  5. 导航到解压缩位置并键入

    lib /machine:x64 /def:libfftw3-3.def

生成.lib文件

(对于单精度或长双精度使用libfftw3f-3.def或libfftw3l-3.def)

  • 这将产生libfftw3-3.lib
  • 注意这是为x64。

打开Visual Studio并创建一个C ++控制台应用程序

  1. 创建一个C ++控制台应用程序 新的Visual Studio C ++控制台应用程序
  2. 接受所有的默认设置 保持默认设置
  3. 将解决方案平台设置为x64 x64平台

告诉Visual Studio在哪里找到FFTW头文件。

(从这个 SO回答。)

有多种方法可以做到这一点,这里是一种方法。

  1. 在解决方案资源管理器中,右键单击项目并选择属性。 项目属性
  2. 添加额外的包含目录。 这将是解压缩的位置。 其他包含目录

(或者,.h文件可以复制到Visual Studio项目文件夹中。)

告诉Visual Studio在哪里找到FFTW导入库。

  1. 右键单击该项目并选择属性。 项目属性
  2. 添加额外的库目录。 这将是解压缩的位置。 额外的库目录
  3. 添加其他依赖项。 输入之前创建的.lib文件(libfftw3-3.lib)。 额外的依赖

创建一个示例程序

(从FFTW教程 。)

 #include "stdafx.h" #include <fftw3.h> int main() { fftw_complex *in, *out; fftw_plan p; int N = 32; in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N); p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE); fftw_execute(p); /* repeat as needed */ fftw_destroy_plan(p); fftw_free(in); fftw_free(out); return 0; } 

告诉Windows从哪里可以找到FFTW DLL最简单的方法是将FFTW DLL(libfftw3-3.dll)从解压缩位置复制到Visual Studio输出文件夹。

  1. 在Visual Studio中,右键单击解决方案,然后选择在文件扩展器中打开文件夹文件资源管理器
  2. 导航到.exe输出文件夹(例如fftw_helloworld2 \ x64 \ Debug) Exe输出文件夹
  3. 复制DLL libfftw3-3.dll

运行/调试

  1. 设置一个断点
  2. 按F5或 启动调试器