vs2019安装cpu版本的fftw 以实现傅里叶变换
1 FFTW包下载:FFTW网站,并解压安装包
2 打开VS 2019
3 在顶部菜单栏里面,选择工具,并在下拉菜单中找到命令行
4 选择开发者命令提示,弹出如下对话框
5 输入lib.exe
,回车
6 进入解压目录
7.依次运行它的安装命令,可以查看README-WINDOWS里的安装提示
lib /machine:x64 /def:libfftw3f-3.deflib /machine:x64 /def:libfftw3-3.deflib /machine:x64 /def:libfftw3l-3.def
8.此时应当生成了以下几个文件,这代表安装完成了。
9. 将3个dll文件复制到project 目录下:
10. 编辑项目属性,将FFTW的解压路径添加到VS (包含目录和库目录);附加依赖项里输入3个lib文件(文件名+.lib扩展名)
11 测试代码,注意环境需要选x64
#include <math.h>
#include <stdlib.h>
#include <stdio.h>
#include <vector>
#include "InterfaceLib.h"
#include <fstream>
#include <string.h>
#include <iostream>
#include<graphics.h>//
#pragma comment( lib, "libfftw3-3.lib")
#pragma comment( lib, "libfftw3f-3.lib")
#pragma comment( lib, "libfftw3l-3.lib")#include "fftw3.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);return 0;
}
12. C++运行,显示由于找不到libfft23-3.dll.无法执行,但是我已经将安装包的路径添加到项目属性了,为什么还是提示找不到
在生成后事件里面的命令行添加,如果以后用到单精度/long double,再分别拷 libfftw3f-3.dll、libfftw3l-3.dll
xcopy /Y /D "I:\2 GPU_coding\fftw-3.3.5-dll64\libfftw3-3.dll" "$(TargetDir)"
链接器附加依赖项
运行结果
13.总结
VS 配置(x64)
C/C++ → 附加包含目录:I:\2 GPU_coding\fftw-3.3.5-dll64 (FFTW解压包所在路径)
链接器 → 常规 → 附加库目录:同上
链接器 → 输入 → 附加依赖项:libfftw3-3.lib (根据所需精度不同在3个包之间自行选择,当前为double类型)
在生成后事件里面的命令行添加→命令行→xcopy /Y /D "I:\2 GPU_coding\fftw-3.3.5-dll64\libfftw3-3.dll" "$(TargetDir)"
(根据所需精度不同在3个包之间自行选择,当前为double类型)