作者aada (aada)
看板C_and_CPP
標題要如何使用FFTW,範例程式跑起來有錯誤
時間Wed Mar 3 23:08:07 2010
我在這個網站,找到相關安裝說明,以及測試程式
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
→ HeyScng:環境沒有設好吧 你的程式我可以跑說 03/03 23:22
→ aada:謝謝您,我在巡看看我的環境 03/03 23:25
→ aada:我還是沒辦法執行,一樣的錯誤 03/03 23:35
→ aada:我是下載fftw-3.2.2.pl1-dll32.zip 03/03 23:36
→ aada:解壓縮後 到Visual Studio 2008 命令提示字元執行 03/03 23:37
→ aada:lib /machine:ix86 /def:libfftw3-3.def 03/03 23:38
→ aada:lib /machine:ix86 /def:libfftw3f-3.def 03/03 23:38
→ aada:lib /machine:ix86 /def:libfftw3l-3.def 03/03 23:38
→ aada:產生 libfftw3-3.lib, libfftw3f-3.lib, libfftw3l-3.lib 03/03 23:39
→ aada:然後在VS2008的 工具-->選項-->專案和方案-->VC++目錄 03/03 23:40
→ aada:目錄顯示:Include檔案加入fftw3.h 03/03 23:41
推 abcabcabc:底下的編譯訊息附檔名 .c 未啥不是.cpp 03/03 23:41
→ aada:cpp可以執行, 難道它不支援c嗎? 03/03 23:42
→ abcabcabc:因為 for( int xxx ; ; ) 03/03 23:42
→ abcabcabc:C的話也可以,但是變數都要先宣告 03/03 23:43
→ abcabcabc:CPP才可以中途插花,中間再亂宣告變數 03/03 23:43
→ abcabcabc:所以你程式改一下,應該也可以用C跑吧? 我沒看,純猜測 03/03 23:44
→ aada:只有i,j要事先宣告, 可以了, 謝謝 03/03 23:46
→ HeyScng:我也學習到了 謝謝 今天還在找lib 怎麼用說XD 03/04 18:57