Compiling FFTW source in Visual studio

2020-04-11 08:06发布

问题:

Recently I am trying to compile the source code of FFTW in Visual studio 2010. I followed the instruction from the FFTW website. I downloaded the source code fftw-3.3.2.zip and corresponding vs 2010 package fftw-3.3-libs-visual-studio-2010.zip.

  1. I got four projects from the solution, bench, benchf, libfftw-3.3, libfftwf-3.3

But on compiling I got following errors on each of the project: C:\Program Files (x86)\MSBuild\Microsoft.Cpp\v4.0\Platforms\x64\Microsoft.Cpp.x64.Targets(514,5): error MSB8008: Specified platform toolset (Windows7.1SDK) is not installed or invalid. Please make sure that a supported PlatformToolset value is selected. which points to the following content

I have tried the debug/release build for both x64 and win32, none of them worked.

Could anyone please help me on this?

回答1:

It looks like you need to install the Windows 7.1 SDK, if you have already installed it, try reinstalling it incase it is corrupted.

You can download the 7.1 SDK from http://www.microsoft.com/en-us/download/details.aspx?id=8279



回答2:

It seems that it can be solved without installing the Windows 7.1 SDK

  1. Right click on the 'libfftw-3.3' project and selected properties
  2. Go to Configuration Properties -> General
  3. Switch 'Platfrom Toolset' from 'Windows7.1SDK' to 'v100'
  4. Recompile

Works for the projects 'libfftwf-3.3' and 'libfftw-3.3'

The project 'bench' and 'benchf' are failing to build:

fatal error C1083: Cannot open source file: '....\libbench2\aligned-main.c': No such file or directory

Can be solved by removing the aligned-main.c from both projects.

You can also use CMake - I created this CMake file for fftw-3.3.2 which I tested with Visual Studio 2010 x64: https://bitbucket.org/Vertexwahn/cmakedemos/src/670f189321d89dbd61ddc8c446c91578305f9da2/fftw-3.3.2/CMakeLists.txt?at=default

You also need this config.h file: https://bitbucket.org/Vertexwahn/cmakedemos/src/670f189321d89dbd61ddc8c446c91578305f9da2/fftw-3.3.2/config.h?at=default