FFTW不用做过多介绍,一般都是在linux下使用,包括放出windows版的作者也自己声明:we don't use Windows ourselves

但是由于要和MIC混合编程,想先在本地使用,其中碰到了一些问题,但也明白了不少Visual Studio的基本配置。

我的系统是windows8和visual studio 2012。

第一步:下载文件

去官网下载FFTW64位库:http://www.fftw.org/install/windows.html,直接解压即可。

第二步:使用VS2012带的lib工具生成lib文件

在fftw-3.3.4-dll64文件夹下输入以下指令:

对于VS系列编译器命令如下:

lib /machine:x64 /def:libfftw3-.def
lib /machine:x64 /def:libfftw3f-.def
lib /machine:x64 /def:libfftw3l-.def

如果不是VS编译器可以不指定machine,直接使用:

 lib /def:libfftw3-.def
lib /def:libfftw3f-.def
lib /def:libfftw3l-.def

Tip:lib指的是lib.exe,如果提示找不到这个指令,说明环境变量没有配,在PATH下添加VS安装路径即可

比如我的是D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin;D:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\bin\amd64

如果前一个仍不能成功生成,可以只用后面一个路径。

第三步:在VS2012中的项目属性中进行配置

主要有4个步骤:

1.添加头文件路径:

在属性-》c/c++=》AdditionalIncludeDirectories中添加fftw-3.3.4-dll64这个文件夹,这样程序可以使用fftw3.h

2.添加库路径:

在属性=》Linker=》AdditionalLibraryDirectories中添加fftw-3.3.4-dll64这个文件夹,这样程序可以使用其中的dll文件。

3.添加库文件名:

在属性=》Linker下的input选项中的AdditionalDependencies中添加

libfftw3-3.lib
libfftw3f-3.lib
libfftw3l-3.lib

这三个lib库,这样程序可以使用其中的lib文件。

4.将动态库复制到项目的代码目录下(包含vcxproj的目录)

libfftw3-3.dll

libfftw3f-3.dll

libfftw3l-3.dll

Tip:我自己在复制64位的dll文件之后一直出现:应用程序无法正常启动0xc000007b的问题,后来我其他配置方法不变,从32位的文件夹里拷贝的这三个dll库,程序就可以正常运行。

第四步:测试代码

#include "fftw3.h"
#include <stdio.h>
#define N 8
int main()
{
int i;
fftw_complex *din,*out;
fftw_plan p;
din = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N);
if((din==NULL)||(out==NULL))
{
printf("Error:insufficient available memory\n");
}
else
{
for(i=; i<N; i++)/*测试数据*/
{
din[i][] = i+;
din[i][] = ;
}
} p = fftw_plan_dft_1d(N, din, out, FFTW_FORWARD,FFTW_ESTIMATE);
fftw_execute(p);
fftw_destroy_plan(p);
fftw_cleanup();
for(i=;i<N;i++)
{
printf("%f,%fi\n",din[i][],din[i][]);
}
printf("\n");
for(i=;i<N;i++)
{
printf("%f,%fi\n",out[i][],out[i][]);
} if(din!=NULL) fftw_free(din);
if(out!=NULL) fftw_free(out);
getchar(); return ;
}

在Visual Studio中使用FFTW库的更多相关文章

  1. 在Visual Studio 中使用git——浏览版本库(七)

    在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...

  2. 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex

    开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...

  3. 利用Visual GDB在Visual Studio中进行Android开发

    转载请注明http://www.cnblogs.com/adong7639/p/4119467.html 无意中发现了Visual GDB这个工具,可以再Visual Studio中进行Android ...

  4. [转]如何在 Visual Studio 中使用 Git 同步代码到 CodePlex

    本文转自:http://www.cnblogs.com/stg609/p/3673782.html 开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framew ...

  5. (15)Visual Studio中使用PCL项目加入WCF WebService参考

    原文 Visual Studio中使用PCL项目加入WCF WebService参考 Visual Studio中使用PCL项目加入WCF WebService参考 作者:Steven Chang 2 ...

  6. Visual Studio 中指定自定义生成事件

    自定义生成事件打开方式 通过指定自定义生成事件,可以在生成开始之前或在它完成之后自动运行命令.在Visual Studio中通过右键项目->属性 进入项目属性菜单. 自定义生成事件的语法 生成事 ...

  7. Visual Studio 编译使用FLTK库

    FLTK介绍 FLTK (Fast Light Tool Kit 发音为fulltick) 是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/ ...

  8. [翻译]第二天 - Visual Studio 中的 .NET Core 模版一览

    原文: http://michaelcrump.net/part2-aspnetcore/ 免责声明:我不是 .NET Core 开发团队的一员,并且使用的是公开.可用的工具. 简介 该系列文章的完整 ...

  9. Visual Studio中头文件stdafx.h的作用

    在较新版的Visual Studio中,新生成的C++项目文件的的头文件夹下会默认有头文件stdafx.h,而源文件夹下则默认有源文件stdafx.cpp,手动将这些文件删除后,编译时系统还会报错.下 ...

随机推荐

  1. MFC窗口实现最小化到托盘 右键菜单和还原

    //.h文件 void toTray();//最小化到托盘 void DeleteTray();//删除托盘图标 afx_msg LRESULT OnShowTask(WPARAM wParam,LP ...

  2. IOS 特定于设备的开发:基于加速计的滚动视图

    倾斜滚轮使用设备的内置加速计来控制在UIScrollView的内容周围移动.当用户调增设备时,材料会相应的下落,他不会把视图定位在屏幕上,而是把内容视图滚动到一个新的偏移位置. 创建这个界面的挑战在于 ...

  3. 再探Delphi2010 Class的构造和析构顺序

    发了上一篇博客.盒子上有朋友认为Class的构造和析构延迟加载.是在Unit的初始化后调用的Class的构造.在Unit的反初始化前调用的Class的析构函数. 为了证明一下我又做了个试验 unit ...

  4. python 使用xrld

    下载xrld.要对应合适的python版本: 下载tar.gz包.解压 通过cmd进入该目录. setup.py build setup.py install 安装成功: 添加路径: from sys ...

  5. 日常之学习CSS3变形和js函数指针

    1,transform变形属性,包括rotate(xxdeg)旋转,translate(x轴px,y轴px)移动,scale(0.5,2)变形(x轴缩小0.5倍,y轴放大2倍),skew(x轴deg, ...

  6. Java中Iterator(迭代器)的用法及其背后机制的探究

    在Java中遍历List时会用到Java提供的Iterator,Iterator十分好用,原因是: 迭代器是一种设计模式,它是一个对象,它可以遍历并选择序列中的对象,而开发人员不需要了解该序列的底层结 ...

  7. HDU2546:饭卡(01背包)

    HDU2546:饭卡 http://acm.hdu.edu.cn/showproblem.php?pid=2546 当我们遇到问题选择物体的价值和顺序相关时就需要,排完序后对其01处理.这题因为当我们 ...

  8. MySQL 开放局域网

    局域网连接mysql报错: ERROR 1130: Host '192.168.0.220' is not allowed to connect to this MySQL server 解决方法: ...

  9. 在CG/HLSL中访问着色器属性(Properties)

    在CG/HLSL中访问着色器属性 Shader在Properties块中访问材质属性.如果你想在一个着色程序中访问一些属性,你需要声明一个Cg/HLSL具有相同的名称和一个匹配的类型的变量. Prop ...

  10. Android 开发笔记“关闭默认键盘”

    1.打开AndroidManifest.xml文件 2.在对应的activity中增加配置信息 android:windowSoftInputMode="stateHidden"