VS C++ 2019安装fftw3库
首先下载fftw3.zip文件,
ftp://ftp.fftw.org/pub/fftw/fftw-3.3.5-dll64.zip
然后编译,用x64_x86 Cross Tools Command Prompt for VS 2019的cmd命令行cd到解压后的文件夹,然后运行它的安装命令,即输出3个.lib文件。命令如下(注意与VC++的版本也有关系,可以查看README-WINDOWS里的安装提示)
lib /machine:x64 /def:libfftw3f-3.def
lib /machine:x64 /def:libfftw3-3.def
lib /machine:x64 /def:libfftw3l-3.def
此时应当生成了以下几个文件
这代表安装完成了。
然后在VS C++创建控制台应用程序来测试一下:
接下来写程序,注意需要满足
-
有可以调用的dll文件
-
include头文件
-
添加链接库lib
第一个将3个dll文件复制到project 目录下:
或者 将K:\Documents\GitHub\fftw3下的libfftw3-3.dll、libfftw3f-3.dll、libfftw3l-3.dll复制到C:\Windows\System32目录下(这个似乎用不着吧。。。)
第二个可以在project手动添加:
编辑project的属性》配置属性》VC++目录》包含目录,加入"K:\Documents\GitHub\fftw3"这个路径。
然后不用指定include的路径,
#include
"fftw3.h"
也可以不
编辑project的属性,并直接指定include路径。
#include
"K:\Documents\GitHub\fftw3\fftw3.h"
第三个可以在project手动添加 :
编辑project的
属性》配置属性》VC++目录》库目录”,
加入"K:\Documents\GitHub\fftw3"这个路径。
然后在头文件中添加宏命令
#pragma
comment(
lib,
"libfftw3-3.lib")
#pragma
comment(
lib,
"libfftw3f-3.lib")
#pragma
comment(
lib,
"libfftw3l-3.lib")
也可以不配置属性,直接指定.lib文件的路径
#pragma comment(lib, "K:\\Documents\\GitHub\\fftw3\\libfftw3-3.lib")
#pragma comment(lib, "K:\\Documents\\GitHub\\fftw3\\libfftw3f-3.lib")
#pragma comment(lib, "K:\\Documents\\GitHub\\fftw3\\libfftw3l-3.lib")
于是,最终版的程序如下:
// ConsoleApplication1.cpp : 此文件包含 "main" 函数。程序执行将在此处开始并结束。
//
#include <iostream>
#pragma comment(lib, "libfftw3-3.lib")
#pragma comment(lib, "libfftw3f-3.lib")
#pragma comment(lib, "libfftw3l-3.lib")
/*————————————————
版权声明:本文为CSDN博主「Naruto_Q」的原创文章,遵循CC 4.0 BY - SA版权协议,转载请附上原文出处链接及本声明。
原文链接:
https ://blog.csdn.net/piaoxuezhong/article/details/78357905
https://blog.csdn.net/moyumoyu/article/details/7950528
*/
#include "fftw3.h"
//#include "K:\Documents\GitHub\fftw3\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;
}
调试采用x64版本的debugger,输出结果如图