写在前面
首先我要声明一点,我不是十分清楚在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
再将下面所示三个文件(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
,我也是个菜鸡,欢迎讨论呀
网友评论