libfftw3-3之正确生成x64和x32的lib文件

首先,去官网http://fftw.org/install/windows.html下载32位和64位的FFTW包,

libfftw3-3之正确生成x64和x32的lib文件_第1张图片

X64位libfftw3-3.lib文件的生成

接着,将下载的x64的zip包解压,然后将libfftw3-3.def,libfftw3f-3.def,libfftw3l-3.def复制到路径D:\Program Files\VS15\VC\bin下(具体根据自己的VS路径改变),

libfftw3-3之正确生成x64和x32的lib文件_第2张图片

libfftw3-3之正确生成x64和x32的lib文件_第3张图片

接着在D:\Program Files\VS15\VC\bin地址栏出输入cmd(差dll的自己补上),回车,在cmd窗口输入lib,回车,出现下面的窗口

libfftw3-3之正确生成x64和x32的lib文件_第4张图片

可以看到,/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测试位数。

libfftw3-3的x32位lib版本和上面的步骤一致,只是需要注意:

将下载的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.
自己去测试成功后,至此也就应该算是完成任务了。

但我还是要总结一下之前的错误做法之前是直接解压64位的FFTW包,然后打开文件夹,在上面的地址栏中直接输入cmd,回车打开了控制台窗口,

libfftw3-3之正确生成x64和x32的lib文件_第5张图片

然后直接输入

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文件难免可能有问题。






你可能感兴趣的:(C++)