vs2019+fftw的配置

写在前面

首先我要声明一点,我不是十分清楚在2019年的今天使用fftw(快速傅里叶变换)是否还有必要,但是最近看的一种tone mapping中使用了fftw,所以我 不得不费劲心力的参考大都是几年前(vs2010,2013,2015)的老资料去将fftw变的可用,虽然从vs2019上配置它真的很费力,废话不多说了,下面就给大家带来配置步骤

1下载正确的fftw

请注意,如果你用的是vs2019 ,请在fftw官网下载32位的,我下的64位的是有问题的,lib是不认识的,所以,请下载32位的并解压,,解压截图(


image.png

2,生成dill

打开开始,找到vs2019开发命令行工具,管理员方式打开


image.png

键入 lib 查看 lib功能是否正常


image.png

有类似输出就是正常的
然后分别键入

lib /machine:x64 /def:libfftw3-3.def
lib /machine:x64 /def:libfftw3l-3.def
lib /machine:x64 /def:libfftw3f-3.def
就会生成三个对应的.lib和.exp文件文件
如图


image.png

3,文件移动操作

将图片中三个标记处的文件移动到C:\Windows\SysWOW64中

如图
image.png

移动完成截图:
image.png

再将下面所示三个文件(lib文件)移动到C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.20.27508\lib\x64
如图:


image.png

移动完成后:


image.png

还需要将fftw文件夹的
image.png

加到vs的头文件中,也就是复制到
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.20.27508\include中

至此,文件的移动操作已经完成

4,创建项目

然后,我们可以打开vs2019,创建一个c++项目
代码

#include "fftw3.h"  
#include <windows.h>
int main()
{
    fftw_complex* in, * out;
    fftw_plan p;
    int N = 8;
    int i;
    int j;
    in = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
    out = (fftw_complex*)fftw_malloc(sizeof(fftw_complex) * N);
    for (i = 0; i < N; i++)
    {
        in[i][0] = 1.0;
        in[i][1] = 0.0;
        printf("%6.2f ", in[i][0]);
    }
    printf("\n");
    p = fftw_plan_dft_1d(N, in, out, FFTW_FORWARD, FFTW_ESTIMATE);
    fftw_execute(p); /* repeat as needed*/
    for (j = 0; j < N; j++)
    {
        printf("%6.2f ", out[j][0]);
    }
    printf("\n");
    fftw_destroy_plan(p);
    fftw_free(in);
    fftw_free(out);
    system("pause");//暂停
    return 0;
}

生成一下,如果出现有未表示的字符,就
image.png

在打开的属性页中
image.png

输入
libfftw3-3.lib
libfftw3f-3.lib
libfftw3l-3.lib

应用->确定就可以了

如果编译通过却不能运行文件,就将fftw的安装文件中的
image.png

复制到项目的文件夹中,就是带.sln文件的那个文件夹,方便项目动态链接lib,运行成功截图


image.png

,我也是个菜鸡,欢迎讨论呀

推荐阅读更多精彩内容