Windows安裝和使用fftw
FFTW是一個(gè)比較快的、非常出名的一個(gè)DFT的開源庫(kù)。 本文探索安裝和配置FFTW,用Visual Studio 2008來(lái)使用fftw。
第一步:下載最新的fftw庫(kù)
這一步很簡(jiǎn)單,只要在google里搜索fftw,很容易就可以定位到fftw的官網(wǎng)。
根據(jù)自己的系統(tǒng)選擇,我用的是64位Win7,但是為了能讓32的機(jī)器可以用,我選擇下載的是32位的。
第二步:解壓+生成lib
1、解壓很簡(jiǎn)單,搞一個(gè)解壓軟件解壓就行了。
2、啟動(dòng)CMD,切換到解壓后的fftw目錄下。
3、我用的Visual Studio 2008,以他為例實(shí)驗(yàn)下。在CMD下執(zhí)行如下命令:
set?path=D:Program?Files?(x86)Microsoft?Visual?Studio?9.0VCbin;D:Program?Files?(x86)Microsoft?Visual?Studio?9.0VCbinamd64;%path%
注意,命令中用到的是你安裝的VS的兩個(gè)目錄。你也許裝到C盤了~
追加編輯(2014年5月):最近項(xiàng)目發(fā)現(xiàn)只要把CMD換成Visual Studio的命令提示符就不用設(shè)置環(huán)境變量了,因?yàn)閂isual Studio的命令提示符中包含了正確的環(huán)境變量。
4、執(zhí)行下面的命令:
lib?/machine:ix86?/def:libfftw3-3.def lib?/machine:ix86?/def:libfftw3f-3.def? lib?/machine:ix86?/def:libfftw3l-3.def
第三步:試驗(yàn)下~
1、新建一個(gè)空白的Win 32 console application
2、添加一個(gè)C文件,并拷入如下代碼:
#include?"fftw3.h" #include#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?memoryn"); } else { for(i=0;?i<N;?i++)/*測(cè)試數(shù)據(jù)*/ { din[i][0]?=?i+1; din[i][1]?=?0; } } p?=?fftw_plan_dft_1d(N,?din,?out,?FFTW_FORWARD,FFTW_ESTIMATE); fftw_execute(p);?/*?repeat?as?needed?*/ fftw_destroy_plan(p); fftw_cleanup(); for(i=0;i<N;i++)/*OUTPUT*/ { printf("%f,%fin",din[i][0],din[i][1]); } printf("n"); for(i=0;i<N;i++)/*OUTPUT*/ { printf("%f,%fin",out[i][0],out[i][1]); } if(din!=NULL)?fftw_free(din); if(out!=NULL)?fftw_free(out); getchar(); return?0; }
3、配置屬性
? ?3.1 、 右擊項(xiàng)目,選擇屬性。
? ?3.2 、 向C/C++選項(xiàng)下的常規(guī)-》附加包含目錄中添加 fftw.h所在的目錄。
? ?3.3 、 添加lib,將fftw目錄下生成的三個(gè)lib的文件名添加到 “鏈接器-》輸入-》附加依賴項(xiàng)”。
? ?3.4 、 將fftw所在的目錄 添加到 “鏈接器-》常規(guī)-》附加庫(kù)目錄”。
4、編譯!
5、執(zhí)行。執(zhí)行時(shí),會(huì)提示找不到某個(gè)dll。 這個(gè)問題有很多方法解決,最簡(jiǎn)單的方法是直接把缺少的dll從fftw目錄下,拷貝到你的執(zhí)行文件所在的目錄~
6、執(zhí)行結(jié)果如下: