首先,去官网http://fftw.org/install/windows.html下载32位和64位的FFTW包,
接着,将下载的x64的zip包解压,然后将libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def复制到路径D:\Program Files\VS15\VC\bin下(具体根据自己的VS路径改变),
接着在D:\Program Files\VS15\VC\bin地址栏出输入cmd(差dll的自己补上),回车,在cmd窗口输入lib,回车,出现下面的窗口
可以看到,/MACHINE:右边有X64,X86选项,解决问题关键也就在此处。
接下来,输入
lib /machine:x64 /def:libfftw3-3.def 回车
输入 lib /machine:x64 /def:libfftw3f-3.def 回车
输入 lib /machine:x64 /def:libfftw3l-3.def 回车
可以看到上述没有出现Warning的语句,说明已经生成x64的lib成功,生成的lib文件在D:\Program Files\VS15\VC\bin路径下
测试生成的x64位的lib文件是否可用,可以在自己的工程里测试,本人已经测试成功。
也可以用dumpbin /headers XXX.lib在控制台里面测试,重新打开控制台cmd.exe,输入 dumpbin /headers 空格,再将libfftw3-3.lib文件拖进cmd 窗口,回车,等几秒钟,出现下面窗口
可以看到,lib为x64的版本,其他的可以按照dumpbin /headers xxx.lib或dumpbin /headers xxx.dll测试位数。
将下载的x32的zip包解压,然后将libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def复制到路径D:\Program Files\VS15\VC\bin下(具体根据自己的VS路径改变),覆盖掉之前x64的同名的libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def文件(之前的def,lib,exp 9个文件最好移出去),
接下来,在D:\Program Files\VS15\VC\bin地址栏出输入cmd(差dll的自己补上),回车,在cmd窗口输入lib,回车,输入
lib /machine:x86 /def:libfftw3-3.def 回车
输入 lib /machine:x86 /def:libfftw3f-3.def 回车
输入 lib /machine:x86 /def:libfftw3l-3.def 回车出现下面窗口,并且在 D:\Program Files\VS15\VC\bin路径下成功生成3个lib文件,可以测试为32位的lib.
自己去测试成功后,至此也就应该算是完成任务了。
lib /machine:x64 /def:libfftw3l-3.def
也生成了对应的lib,发现生成的3个lib都不能用,在工程中lib库链接失败,
用dumpbin /headers xxx/lib,检查了一下发现是默认生成的I386的lib,网上查了查好像就是32位的,但我们要生成的是64位的lib。
原因总结:打开前面解压的文件夹,在其上的地址栏中输入cmd,回车打开cmd窗口,输入lib,看到如下窗口:
发现/MACHINE:右边的选项里面根本就没有x86,x64选项,所以生成的x32,x64的lib文件难免可能有问题。