fftw在VS2010中的配置使用

来源:互联网 发布:淘宝网旅游鞋女 编辑:程序博客网 时间:2024/04/28 19:03

自己编的FFT速度太慢,不会优化。MATLAB吧上的大神说有开源的fftw可以用,而且MATLAB也是用的这个,下载地址:http://www.fftw.org/install/windows.html

目前最新是fftw-3.3.4-dll32

之前网上很多方法编译,没有成功,老是提示需要SDK7.1或者生成失败,昨晚上终于成功了。

打开VS2010,工具->命令提示,cd D:\Program Files\fftw-3.3.4-dll32进入目录,输入:

32位版本:

lib /def:libfftw3f-3.def

lib /def:libfftw3-3.def

lib /def:libfftw3l-3.def

64位版本:

lib /machine:x64 /def:libfftw3f-3.def

lib /machine:x64 /def:libfftw3-3.def

lib /machine:x64 /def:libfftw3l-3.def

生成了libfftw3-3.lib、libfftw3l-3.lib、libfftw3f-3.lib三个LIB文件 。新建VC++项目,以控制台为例:
#include "stdafx.h"
#include "fftw3.h" 
#include  
#define N 8 
int _tmain(int argc, _TCHAR* argv[])
{
 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=0; i
  
   din[i][0] = i+1; 
   din[i][1] = 0; 
  
 
 p = fftw_plan_dft_1d(N, din, out, FFTW_FORWARD,FFTW_ESTIMATE); 
 fftw_execute(p);  
 fftw_destroy_plan(p); 
 fftw_cleanup(); 
 for(i=0;i
 
  printf("%f,%f\n",din[i][0],din[i][1]); 
 
 printf("\n"); 
 for(i=0;i
 
  printf("%f,%f\n",out[i][0],out[i][1]); 
 
 if(din!=NULL) fftw_free(din); 
 if(out!=NULL) fftw_free(out); 
 getchar();
 return 0;
}
右击项目,选择属性。向C/C++选项下的常规-》附加包含目录中添加 fftw.h所在的目录。添加lib,将fftw目录下生成的三个lib的文件名添加到 “链接器-》输入-》附加依赖项”。将fftw所在的目录 添加到 “链接器-》常规-》附加库目录”。
编译、执行。若提示找不到某个dll,直接将其拷入项目文件夹中。成功!
0 0
原创粉丝点击