我试图链接到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