在Visual Studio中使用FFTW库
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库的更多相关文章
- 在Visual Studio 中使用git——浏览版本库(七)
在Visual Studio 中使用git--什么是Git(一) 在Visual Studio 中使用git--给Visual Studio安装 git插件(二) 在Visual Studio 中使用 ...
- 如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framework.ASP.Net MVC等框架的逐渐开源,也让大家看到了微软开源的步伐.CodePlex 则是 ...
- 利用Visual GDB在Visual Studio中进行Android开发
转载请注明http://www.cnblogs.com/adong7639/p/4119467.html 无意中发现了Visual GDB这个工具,可以再Visual Studio中进行Android ...
- [转]如何在 Visual Studio 中使用 Git 同步代码到 CodePlex
本文转自:http://www.cnblogs.com/stg609/p/3673782.html 开源社区不管在国内还是国外都很火热,微软也曾因为没有开源而倍受指责,但是随着 .Net framew ...
- (15)Visual Studio中使用PCL项目加入WCF WebService参考
原文 Visual Studio中使用PCL项目加入WCF WebService参考 Visual Studio中使用PCL项目加入WCF WebService参考 作者:Steven Chang 2 ...
- Visual Studio 中指定自定义生成事件
自定义生成事件打开方式 通过指定自定义生成事件,可以在生成开始之前或在它完成之后自动运行命令.在Visual Studio中通过右键项目->属性 进入项目属性菜单. 自定义生成事件的语法 生成事 ...
- Visual Studio 编译使用FLTK库
FLTK介绍 FLTK (Fast Light Tool Kit 发音为fulltick) 是一种使用C++开发的GUI工具包,它可以应用于Unix,Linux,MS-Windows95/98/NT/ ...
- [翻译]第二天 - Visual Studio 中的 .NET Core 模版一览
原文: http://michaelcrump.net/part2-aspnetcore/ 免责声明:我不是 .NET Core 开发团队的一员,并且使用的是公开.可用的工具. 简介 该系列文章的完整 ...
- Visual Studio中头文件stdafx.h的作用
在较新版的Visual Studio中,新生成的C++项目文件的的头文件夹下会默认有头文件stdafx.h,而源文件夹下则默认有源文件stdafx.cpp,手动将这些文件删除后,编译时系统还会报错.下 ...
随机推荐
- PHP上传图片
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/ ...
- Git-常用命令集合
该文章会陆续添加内容,学习网页来自http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000 ...
- 使用tcpdump抓Android网络包
1 抓包原理 tcpdump(需Root用户运行)拦截和显示发送或收到过网络连接到该机器的TCP/IP和其他数据包.简单说就监控手机进出网络数据. 2 方法优劣 2.1优点 1.手机数据包无遗漏 2. ...
- php执行shell更新svn文件的方法
vim /etc/sudoers 修改内容如下: #Defaults !visiblepw Defaults visiblepw #Defaults requiretty <?php set_t ...
- 侯捷C++ Type traits(类型萃取
泛型編程編出來的代碼,適用於任何「吻合某種條件限制」的資料型別.這已成為撰寫可復用代碼時的一個重要選擇.然而,總有一些時候,泛型不夠好 — 有時候是因為不同的型別差距過大,難以產生一致的泛化實作版本. ...
- 个人信用卡管理 - iOS UI原型
- Uber司机一周体验记:成单率仅57%
虽然注册过程不顺利,但耗时一下午终究还是当上人民优步司机了.而且一周下来也完成了十几单,个中滋味恐怕只有载着陌生的乘客开上路才能体会. 第一单 一位赶去面试的年轻人,刚来北京两年,因为路线不熟坐错了公 ...
- HDU3415:Max Sum of Max-K-sub-sequence(单调队列)
Problem Description Given a circle sequence A[1],A[2],A[3]......A[n]. Circle sequence means the left ...
- c 结构体struct
struct 定义初始化 #include<stdio.h> typedef struct stuInfo { ]; //姓名 int stuId; //学号 int age; //年龄 ...
- css布局之块上下左右居中
以下方案的通用代码: HTML code: <div class="box"> <div class="content"> <!- ...