These are some general notes on Cinder's implementation on the Microsoft Windows platform.
By default Cinder on Windows targets Windows XP SP2 and later. This is dictated by the _WIN32_WINNT
variable, which is typically defined in your project's preprocessor definitions. The value 0x0502
maps to Windows XP SP 2.
The Visual C++ 2010 compiler (sometimes abbreviated VC10) is fully supported by Cinder. In order to build Cinder itself, or to use Cinder's built-in audio with this compiler, you will need to install the DirectX June 2010 SDK. Unfortunately some people run into an installer bug with this SDK. If you see an error S1023, follow the instructions in this document from Microsoft.
The Visual C++ 2012 compiler (sometimes abbreviated VC11) is fully supported by Cinder. This version of Visual C++ has two toolsets associated with it, called v110 and v110_xp. The former comes installed automatically, and is able to target Windows Vista, Windows 7 and Windows 8. Cinder's audio requirements complicate the situation a bit (see note below), but if you don't need to target Windows XP the v110 compiler is typically the best choice. However if you do need XP support, you'll need to get the v110_xp compiler from Microsoft. This is available with the Visual Studio 2012 Update 2.
After installing the update you can change the toolset of your project in the General properties in the Platform Toolset field.
Cinder's audio support is written around XAudio2 on Windows. Unfortunately there is a schism between the Windows 8 SDK and prior versions. Specifically, the SDK included with Visual C++ 2012 uses version 2.8 of this API, while previously the API was only available via the DirectX SDK, and it shipped version 2.7.
Various pieces of Microsoft documentation describe the technical particulars. The document XAudio2 Versions is informative.
Target | Compiler | XAudio | Notes |
Win XP SP2+ | Visual C++ 2010 | 2.7 | Requires DirectX SDK 2010 |
Win XP SP2+ | Visual C++ 2012 (v110_xp) | 2.7 | Requires DirectX SDK 2010, see note above on v110_xp |
Win 8+ | Visual C++ 2012 (v110) | 2.8 | Requires setting _WIN32_WINNT >= 0x0602 , see note below |
In order to target Windows 8 exclusively, you'll need to set the preprocessor variable _WIN32_WINNT
to 0x0602 in the Preprocessor Definitions of your project settings. You'll also need to set this variable to the same value in Cinder itself and rebuild it.
Another alternative is to use the FMOD CinderBlock which is included with the distribution.