2012-09-17 26 views
3

我想在Visual Studio 2010中使用FFTW獲得一個簡單的項目。我無法鏈接庫。鏈接在Visual Studio 2010中的libfftw3-3.lib

我已經創建了64位.lib文件的指示上their Windows page

我自己解壓下載的64位版本,並在該目錄中運行指定的工具。我已經將它解壓縮到一個名爲「fftw」的文件夾中,作爲我的項目的一個兄弟。

在Visual Studio中,我創建了一個包含所有默認值的C++控制檯應用程序。默認的生成類型是調試Win32。我已經添加了此行配置屬性→鏈接C:\Users\XXXXX\Documents\Visual Studio 2010\Projects\fftw\libfftw3-3.lib

我還添加了libfftw3-3.lib到配置屬性→鏈接→輸入並試圖完整路徑存在。

我包括STDLIB複雜和FFTW:

#include <complex> 
#include "..\..\fftw\fftw3.h" 

我的主要功能只是有他們的示例代碼:

int _tmain(int argc, _TCHAR* argv[]) 
{ 
    const int N = 1024; 
    fftw_complex in[N], out[N]; 
    fftw_plan p; 
    p = fftw_create_plan(N, FFTW_FORWARD, FFTW_ESTIMATE); 
    fftw_one(p, in, out); 
    fftw_destroy_plan(p); 
    return 0; 
} 

當我嘗試建立我得到這個:

1>------ Build started: Project: FFTTest, Configuration: Debug Win32 ------ 
1> FFTTest.cpp 
1>c:\users\XXXXX\documents\visual studio 2010\projects\ffttest\ffttest\ffttest.cpp(34): error C3861: 'fftw_create_plan': identifier not found 
1>c:\users\XXXXX\documents\visual studio 2010\projects\ffttest\ffttest\ffttest.cpp(36): error C3861: 'fftw_one': identifier not found 
========== Build: 0 succeeded, 1 failed, 0 up-to-date, 0 skipped ========== 

有人能以我的方式向我展示錯誤嗎?

+0

無論使用64位版本庫的計劃如何?你的測試項目是32位的。 –

+0

我剛剛嘗試使用FFTW的32位二進制文​​件處理我的32位項目。我犯了同樣的錯誤。我從他們的32位軟件包中提取了.h,.dll和.def。然後這裏是我在提示符上運行以創建.lib和.exp C ...項目\ fftw> lib /def:libfftw3-3.def/machine:x86 Microsoft(R)Library Manager Version 10.00.40219.01版權所有(C)Microsoft公司。版權所有。 創建庫libfftw3-3.lib和對象libfftw3-3.exp – MattD

回答

0

不要在路徑中使用反斜槓:

#include "../../fftw/fftw3.h" 

在C/C++的反斜線被解釋爲轉義字符,以生產需要加倍的反斜槓,但通常總是用/使路徑分隔符。

+0

沒有骰子,查爾斯。相同的錯誤消息。此外,不重要,但反斜槓似乎工作正常。在.h文件中定義了fftw_complex和fftw_plan,並且我沒有爲這些標識符獲取任何錯誤。 – MattD

+0

它是在名稱空間還是什麼? – CharlesB

+0

我不這麼認爲......我沒有在.h文件中看到這些定義。那是問題嗎?在.lib/.exp文件中列出入口點的命令是什麼? – MattD

0

我試圖在FFTW v3庫中使用FFTW v2 API。一個可行的例子是他們的v3 tutorial page

我上面引用庫的步驟都很好。您也可能想要將FFTW DLL放入可執行文件所在的目錄中。