要如何使用FFTW,範例程式跑起來有錯誤

看板C_and_CPP (C/C++)作者 (aada)時間16年前 (2010/03/03 23:08), 編輯推噓1(1018)
留言19則, 3人參與, 最新討論串1/1
我在這個網站,找到相關安裝說明,以及測試程式 http://ppt.cc/UMd3 我也已經安裝好, 在測試的時候出現以下的錯誤 // 程式碼 #include <stdio.h> #include <stdlib.h> #include "fftw3.h" int main() { fftw_complex *in, *out; fftw_plan p; int N= 8; in = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); out = (fftw_complex*) fftw_malloc(sizeof(fftw_complex) * N); for( int 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(int 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; } //錯誤資訊 1>c:\bn\dsfb.c(12) : error C2143: 語法錯誤 : 遺漏 ';' (在 '型別' 之前) 1>c:\bn\dsfb.c(12) : error C2143: 語法錯誤 : 遺漏 ';' (在 '型別' 之前) 1>c:\bn\dsfb.c(12) : error C2143: 語法錯誤 : 遺漏 ')' (在 '型別' 之前) 1>c:\bn\dsfb.c(12) : error C2143: 語法錯誤 : 遺漏 ';' (在 '型別' 之前) 1>c:\bn\dsfb.c(12) : error C2065: 'i' : 未宣告的識別項 1>c:\bn\dsfb.c(12) : warning C4552: '<' : 運算子無效; 必須是具有副作用的運算子 1>c:\bn\dsfb.c(12) : error C2065: 'i' : 未宣告的識別項 1>c:\bn\dsfb.c(12) : error C2059: 語法錯誤 : ')' 1>c:\bn\dsfb.c(13) : error C2143: 語法錯誤 : 遺漏 ';' (在 '{' 之前) 1>c:\bn\dsfb.c(14) : error C2065: 'i' : 未宣告的識別項 1>c:\bn\dsfb.c(15) : error C2065: 'i' : 未宣告的識別項 1>c:\bn\dsfb.c(16) : error C2065: 'i' : 未宣告的識別項 1>c:\bn\dsfb.c(21) : error C2143: 語法錯誤 : 遺漏 ';' (在 '型別' 之前) 1>c:\bn\dsfb.c(21) : error C2143: 語法錯誤 : 遺漏 ';' (在 '型別' 之前) 1>c:\bn\dsfb.c(21) : error C2143: 語法錯誤 : 遺漏 ')' (在 '型別' 之前) 1>c:\bn\dsfb.c(21) : error C2143: 語法錯誤 : 遺漏 ';' (在 '型別' 之前) 1>c:\bn\dsfb.c(21) : error C2065: 'j' : 未宣告的識別項 1>c:\bn\dsfb.c(21) : warning C4552: '<' : 運算子無效; 必須是具有副作用的運算子 1>c:\bn\dsfb.c(21) : error C2065: 'j' : 未宣告的識別項 1>c:\bn\dsfb.c(21) : error C2059: 語法錯誤 : ')' 1>c:\bn\dsfb.c(22) : error C2143: 語法錯誤 : 遺漏 ';' (在 '{' 之前) 1>c:\bn\dsfb.c(23) : error C2065: 'j' : 未宣告的識別項 順帶一問, C code要怎麼樣才可以宣告complex 謝謝 -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.192.147

03/03 23:22, , 1F
環境沒有設好吧 你的程式我可以跑說
03/03 23:22, 1F

03/03 23:25, , 2F
謝謝您,我在巡看看我的環境
03/03 23:25, 2F

03/03 23:35, , 3F
我還是沒辦法執行,一樣的錯誤
03/03 23:35, 3F

03/03 23:36, , 4F
我是下載fftw-3.2.2.pl1-dll32.zip
03/03 23:36, 4F

03/03 23:37, , 5F
解壓縮後 到Visual Studio 2008 命令提示字元執行
03/03 23:37, 5F

03/03 23:38, , 6F
lib /machine:ix86 /def:libfftw3-3.def
03/03 23:38, 6F

03/03 23:38, , 7F
lib /machine:ix86 /def:libfftw3f-3.def
03/03 23:38, 7F

03/03 23:38, , 8F
lib /machine:ix86 /def:libfftw3l-3.def
03/03 23:38, 8F

03/03 23:39, , 9F
產生 libfftw3-3.lib, libfftw3f-3.lib, libfftw3l-3.lib
03/03 23:39, 9F

03/03 23:40, , 10F
然後在VS2008的 工具-->選項-->專案和方案-->VC++目錄
03/03 23:40, 10F

03/03 23:41, , 11F
目錄顯示:Include檔案加入fftw3.h
03/03 23:41, 11F

03/03 23:41, , 12F
底下的編譯訊息附檔名 .c 未啥不是.cpp
03/03 23:41, 12F

03/03 23:42, , 13F
cpp可以執行, 難道它不支援c嗎?
03/03 23:42, 13F

03/03 23:42, , 14F
因為 for( int xxx ; ; )
03/03 23:42, 14F

03/03 23:43, , 15F
C的話也可以,但是變數都要先宣告
03/03 23:43, 15F

03/03 23:43, , 16F
CPP才可以中途插花,中間再亂宣告變數
03/03 23:43, 16F

03/03 23:44, , 17F
所以你程式改一下,應該也可以用C跑吧? 我沒看,純猜測
03/03 23:44, 17F

03/03 23:46, , 18F
只有i,j要事先宣告, 可以了, 謝謝
03/03 23:46, 18F

03/04 18:57, , 19F
我也學習到了 謝謝 今天還在找lib 怎麼用說XD
03/04 18:57, 19F
文章代碼(AID): #1BZdjSqX (C_and_CPP)
文章代碼(AID): #1BZdjSqX (C_and_CPP)