Cinder

Windows Notes

These are some general notes on Cinder's implementation on the Microsoft Windows platform.

Targeting

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.

Visual C++ 2010 Support

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.

Visual C++ 2012 Support

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.


You'll need to do this for Cinder and rebuild it, as well as modifying your project in the same way. A longer discussion of this topic is available from Microsoft in this document.

Audio Requirements

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.


TargetCompilerXAudioNotes
Win XP SP2+Visual C++ 20102.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

Targeting Windows 8 only

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.