Visual studio 2015 使用Visual Studio 2015构建FFTW库[添加:VS 2019的步骤]
我正在尝试使用Visual Studio 2015编译一个使用FFTW的项目。不幸的是,由于以下问题,来自FFTW网站的预编译二进制文件与VS 2015不兼容:。尝试编译时会出现链接错误Visual studio 2015 使用Visual Studio 2015构建FFTW库[添加:VS 2019的步骤],visual-studio-2015,mingw,static-libraries,visual-studio-2019,fftw,Visual Studio 2015,Mingw,Static Libraries,Visual Studio 2019,Fftw,我正在尝试使用Visual Studio 2015编译一个使用FFTW的项目。不幸的是,由于以下问题,来自FFTW网站的预编译二进制文件与VS 2015不兼容:。尝试编译时会出现链接错误 我正在寻找关于如何编译兼容版本的建议。显而易见的答案是用VS 2015重新编译FFTW,但我根本找不到任何关于如何用Visual Studio编译FFTW的说明,还有很多建议认为很难做到这一点。标准版本是用MinGW编译的,他们确实提供了如何实现这一点的说明。但MinGW能否生成一个与VS 2015兼容的库?我
我正在寻找关于如何编译兼容版本的建议。显而易见的答案是用VS 2015重新编译FFTW,但我根本找不到任何关于如何用Visual Studio编译FFTW的说明,还有很多建议认为很难做到这一点。标准版本是用MinGW编译的,他们确实提供了如何实现这一点的说明。但MinGW能否生成一个与VS 2015兼容的库?我也没有找到任何关于这方面的信息。我最终设法自己解决了这个问题。我不能保证我用了最好的方式,因为我不是VisualStudio专家,但它确实有效。为了子孙后代的利益,以下是我所做的 首先,复制config.h.in。调用新的副本config.h。现在手动编辑它,为您要生成的库设置选项:它应该使用什么精度模式、要编译的向量指令集(如果有)、各种类型的大小(这取决于您计划以32位还是64位模式编译)、是否包括线程支持等 现在创建一个空的VS项目。我建议将其放在源文件夹的顶层。然后在解决方案资源管理器中,单击顶部的“显示所有文件”图标。这将简化以下步骤,因为您可以直接从解决方案资源管理器添加或排除文件 打开“项目属性”窗口。您需要设置很多选项: 通常,将“配置类型”设置为静态库。(或者,如果需要DLL,可以将其设置为动态库,但随后需要找出如何使其导出必要的符号。我没有这样做,因为我需要一个静态库。) 在VC++目录中,编辑“包含目录”。添加以下目录(用包含源的实际目录替换“(源目录”): 如果包括线程支持,那么在C/C++>语言中,将“OpenMP支持”设置为“是” 如果包括AVX支持,那么在C/C++>代码生成中,将“启用增强指令集”设置为AVX。这意味着您生成的库将无法在任何不支持AVX的计算机上运行。通过仅在使用AVX的单个源文件上设置此选项,您可能可以绕过该限制。我不确定 在C/C++>输出文件中,将“对象文件名”设置为
$(IntDir)/%(RelativeDir)/
。(FFTW有许多同名但位于不同目录中的文件,默认情况下VS将所有对象文件放在同一目录中,这将不起作用。)
现在,您可以将源文件添加到项目中,您可以通过在解决方案资源管理器中右键单击并选择“包含在项目中”来完成此操作。应将所有.c文件添加到以下文件夹中:
api
dft
dft/scalar
kernel
rdft
rdft/scalar
reodft
dft/simd
rdft/simd
simd-support
如果您想要线程支持,您应该在“threads”中添加除threads.c之外的所有源文件。(其中包含pthreads版本。)
如果要支持任何向量指令集,则应仅包括与以下文件夹中所需的特定指令集相关的文件:
api
dft
dft/scalar
kernel
rdft
rdft/scalar
reodft
dft/simd
rdft/simd
simd-support
假设您想要mpi支持,那么可以将文件包含在“mpi”中。我没有那样做,所以我不知道你还需要什么来让它发挥作用
确保将配置设置为“Release”和“x86”或“x64”,具体取决于所需的二进制文件类型
现在,如果我没有忘记任何重要的东西,您应该能够编译一个库。如果有人需要使用Visual Studio 2019为Windows程序构建静态或动态FFTW库: 您实际上不需要在接受的答案中执行任何手动和复杂的步骤——它们容易出错,并且比下面的步骤长一百倍 首先,我有个好消息要告诉你们——VisualStudio2019(包括免费社区版和专业版)!因此,您只需执行以下步骤: