解决 LNK1181 错误:无法打开输入文件 “libfftw3f-3.lib”
1. 下载预编译文件
从 FFTW官网 下载最新的预编译库:
- 32-bit 版本: fftw-3.2.2.pl1-dll32.zip (2.6MB)
- 64-bit 版本: fftw-3.2.2-dll64.zip (3.1MB)
将文件解压到 D:\fft
目录下。
2. 使用 Lib.exe 生成相应的库文件
以管理员身份打开 Developer PowerShell for VS 2019,然后执行以下步骤:
32位版本
cd D:\fft
lib /def:libfftw3f-3.def
lib /def:libfftw3-3.def
lib /def:libfftw3l-3.def
64位版本
lib /machine:x64 /def:libfftw3f-3.def
lib /machine:x64 /def:libfftw3-3.def
lib /machine:x64 /def:libfftw3l-3.def
生成并得到 libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib
将libfftw3f-3.dll libfftw3-3.dll libfftw3l-3.dll
放入指定位置
64位放在C:\Windows\SysWOW64
32位放在windows/system32
3.生成的库文件libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib放入vc中的lib文件夹
这一步,要查看vc的lib所在的地址
-
打开VS2019
-
项目=>属性=>VC++目录==>外部包含目录(这一步是查看本地VS2019调用外部包的文件地址)
-
得到VS2019默认外部包含目录
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\include C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\atlmfc\include
-
把fftw3.h放入上述的中的include文件夹。
C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\lib\x64 C:\Program Files (x86)\Microsoft Visual Studio\2019\Community\VC\Tools\MSVC\14.29.30133\atlmfc\lib\x64
-
把生成的libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib放入上述中的lib文件夹
4.设置参数:”项目“>“项目属性”>“配置属性”>“链接器”>“输入”>“附加依赖项”,将以下三项添加进去:
libfftw3-3.lib libfftw3f-3.lib libfftw3l-3.lib
后记:
FFTW 库的单精度和双精度计算分别调用了 SSE 和 SSE2 指令集。
该库由 MinGW 编译器 x86_64-w64-mingw32-gcc (GCC) 4.9.1 编译。
尽管单精度和双精度库使用了 SSE/SSE2 指令集,它们在老旧的处理器上仍然可以运行,因为库在运行时会检查是否支持这些指令集,如果不支持则禁用相关代码。