我試圖鏈接到fftw庫使用visual C++ express,但我嘗試編譯時得到鏈接器錯誤。我通過使用lib.exe程序創建.lib「導入庫」來解釋網站(http://fftw.org/install/windows.html)解釋的lib文件。無法鏈接到fftw庫使用visual c + + express在Windows 64位
我將.lib文件添加到「Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ lib」,並將fftw3.h添加到「Program Files(x86)\ Microsoft Visual Studio 9.0 \ VC \ include」。然後我把這些dll文件放在「Windows/system32」文件夾中。我通過將庫(libfftw3f-3.lib,libfftw3-3.lib,libfftw3l-3.lib)添加到鏈接器/輸入首選項的附加依賴鏈接庫。當我嘗試編譯我收到以下錯誤:
process_wav.obj : error LNK2019: unresolved external symbol __imp__fftwf_destroy_plan referenced in function _main
process_wav.obj : error LNK2019: unresolved external symbol __imp__fftwf_plan_dft_r2c_1d referenced in function _main
我搜索了堆棧溢出,但大部分的答案解釋說,圖書館需要添加額外的依賴性被發現。當我把/詳細:LIB命令行選項,我得到以下幾點:
f
fdf
1>Linking...
1>Searching libraries
1> Searching libfftw3f-3.lib:
1> Searching libfftw3-3.lib:
1> Searching libfftw3l-3.lib:
1> Searching F:\Program Files\Mega-Nerd\libsndfile-win32-bin-1.1.7\libsndfile-1.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRTD.lib:
1> Searching F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1> Searching F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1> Searching libfftw3f-3.lib:
1> Searching libfftw3-3.lib:
1> Searching libfftw3l-3.lib:
1> Searching F:\Program Files\Mega-Nerd\libsndfile-win32-bin-1.1.7\libsndfile-1.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\kernel32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\user32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\gdi32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\winspool.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\comdlg32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\advapi32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\shell32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\ole32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\oleaut32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\uuid.lib:
1> Searching F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\MSVCRTD.lib:
1> Searching F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\OLDNAMES.lib:
1> Searching F:\Program Files (x86)\Microsoft Visual Studio 9.0\VC\lib\msvcprtd.lib:
1> Searching libfftw3f-3.lib:
1> Searching libfftw3-3.lib:
1> Searching libfftw3l-3.lib:
1> Searching F:\Program Files\Mega-Nerd\libsndfile-win32-bin-1.1.7\libsndfile-1.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbc32.lib:
1> Searching F:\Program Files\Microsoft SDKs\Windows\v6.0A\\lib\odbccp32.lib:
1>Finished searching libraries
這似乎找到這些庫,但不知道是誰找到它們的功能名稱。我從一個也使用這個庫的網站獲得了代碼,有趣的是函數名不會出現在「fftw3.h」中,但我認爲這不是問題的原因。
任何幫助將不勝感激,因爲我不知道現在在哪裏。
謝謝。
您必須編輯了fftw3.h頭文件,以便使用__declspec(dllimport)。 .h文件建議在「惱人的Windows語法」註釋之後這樣做。這實際上並不是正確的做法,預編譯的DLL不會導出入口點的__imp版本。 – 2012-01-28 14:17:31
謝謝你回到我身邊。對不起,遲了回覆,我試圖刪除__declspec(dllimport),並最終得到了很多缺少類型說明符錯誤。我嘗試使用下面建議的32位庫,並將暫時解決此問題。我不確定爲什麼當我使用64位版本時找不到函數名稱。 – user1175242 2012-01-31 21:31:55