Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jsf-2/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Visual studio 2015 使用Visual Studio 2015构建FFTW库[添加:VS 2019的步骤]_Visual Studio 2015_Mingw_Static Libraries_Visual Studio 2019_Fftw - Fatal编程技术网

Visual studio 2015 使用Visual Studio 2015构建FFTW库[添加:VS 2019的步骤]

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兼容的库?我

我正在尝试使用Visual Studio 2015编译一个使用FFTW的项目。不幸的是,由于以下问题,来自FFTW网站的预编译二进制文件与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(包括免费社区版和专业版)!因此,您只需执行以下步骤:

  • 如果尚未安装Visual Studio 2019提供的所有组件,请启动它,按Ctrl-Q,然后键入“cmake tools for linux”。它应该找到安装选项,单击该选项并安装组件。如果您不在线,请启动VS的安装程序并选择此可选组件(“CMake tools for Linux”)进行安装

  • > p>在VisualStudio 2019中创建一个空的解决方案,选择适合于库、C++和Windows桌面开发的模板。
  • 创建解决方案后,像往常一样选择所需的目标平台(如x64版本)和构建类型(版本/调试)。退出VS

  • 从下载最新的源文件存档:并将文件解压缩到创建VS解决方案和项目的文件夹中。不要在MinGW下运行任何提供的配置脚本,也不要执行官方或第三方文档中指示您执行的任何其他步骤

  • 运行Visual Studio,打开您创建的解决方案,然后在解决方案资源管理器子窗口中,单击工具提示为“切换视图”的图标,并使用它切换到“文件夹视图”模式。一旦发生这种情况,VS就开始用所有文件填充Solution Explorer,最重要的是,它会自动发现配置脚本和CMake makefiles,并开始配置解决方案,包括至关重要的config.h

  • 等待流程完成(VS应该说“CMake生成完成”)。然后,在解决方案资源管理器子窗口中,再次单击带有工具提示“切换视图”图标的图标,并使用它来