diff --git b/libs/vst3/pluginterfaces/base/fplatform.h a/libs/vst3/pluginterfaces/base/fplatform.h index 3a93738937..7db1c5d222 100644 --- b/libs/vst3/pluginterfaces/base/fplatform.h +++ a/libs/vst3/pluginterfaces/base/fplatform.h @@ -115,8 +115,8 @@ #ifndef SMTG_CPP11 #error unsupported compiler #endif - #define SMTG_CPP11_STDLIBSUPPORT 1 - #define SMTG_HAS_NOEXCEPT 1 + #define SMTG_CPP11_STDLIBSUPPORT SMTG_CPP11 + #define SMTG_HAS_NOEXCEPT SMTG_CPP11 #endif //----------------------------------------------------------------------------- // Mac and iOS diff --git b/libs/vst3/pluginterfaces/vst/ivstnoteexpression.h a/libs/vst3/pluginterfaces/vst/ivstnoteexpression.h index dd04d14f6a..87f5feac91 100644 --- b/libs/vst3/pluginterfaces/vst/ivstnoteexpression.h +++ a/libs/vst3/pluginterfaces/vst/ivstnoteexpression.h @@ -34,7 +34,10 @@ VST predefines some types like volume, pan, tuning by defining their ranges and Used by NoteExpressionEvent::typeId and NoteExpressionTypeID::typeId \see NoteExpressionTypeInfo */ -enum NoteExpressionTypeIDs : uint32 +enum NoteExpressionTypeIDs +#if SMTG_CPP11 + : uint32 +#endif { kVolumeTypeID = 0, ///< Volume, plain range [0 = -oo , 0.25 = 0dB, 0.5 = +6dB, 1 = +12dB]: plain = 20 * log (4 * norm) kPanTypeID, ///< Panning (L-R), plain range [0 = left, 0.5 = center, 1 = right] @@ -183,7 +186,10 @@ DECLARE_CLASS_IID (INoteExpressionController, 0xB7F8F859, 0x41234872, 0x91169581 /** KeyswitchTypeIDs describes the type of a key switch \see KeyswitchInfo */ -enum KeyswitchTypeIDs : uint32 +enum KeyswitchTypeIDs +#if SMTG_CPP11 +: uint32 +#endif { kNoteOnKeyswitchTypeID = 0, ///< press before noteOn is played kOnTheFlyKeyswitchTypeID, ///< press while noteOn is played diff --git b/libs/vst3/pluginterfaces/gui/iplugview.h a/libs/vst3/pluginterfaces/gui/iplugview.h index 32e1fcb3bd..9d6ec9a0d4 100644 --- b/libs/vst3/pluginterfaces/gui/iplugview.h +++ a/libs/vst3/pluginterfaces/gui/iplugview.h @@ -213,8 +213,8 @@ DECLARE_CLASS_IID (IPlugFrame, 0x367FAF01, 0xAFA94693, 0x8D4DA2A0, 0xED0882A3) //------------------------------------------------------------------------ namespace Linux { -using TimerInterval = uint64; -using FileDescriptor = int; +#define TimerInterval uint64 +#define FileDescriptor int //------------------------------------------------------------------------ /** Linux event handler interface diff --git a/libs/vst3/pluginterfaces/base/ftypes.h b/libs/vst3/pluginterfaces/base/ftypes.h index feda6b0b9b..5f61e0ac81 100644 --- a/libs/vst3/pluginterfaces/base/ftypes.h +++ b/libs/vst3/pluginterfaces/base/ftypes.h @@ -93,6 +93,8 @@ namespace Steinberg typedef char char8; #ifdef _NATIVE_WCHAR_T_DEFINED typedef __wchar_t char16; +#elif defined(__MINGW32__) + typedef wchar_t char16; #elif SMTG_CPP11 typedef char16_t char16; #else diff --git a/libs/vst3/pluginterfaces/base/funknown.cpp b/libs/vst3/pluginterfaces/base/funknown.cpp index 0419bbc4bb..f205ac88de 100644 --- a/libs/vst3/pluginterfaces/base/funknown.cpp +++ b/libs/vst3/pluginterfaces/base/funknown.cpp @@ -68,7 +68,7 @@ namespace FUnknownPrivate { int32 PLUGIN_API atomicAdd (int32& var, int32 d) { #if SMTG_OS_WINDOWS - return InterlockedExchangeAdd (&var, d) + d; + return InterlockedExchangeAdd ((volatile long int*)&var, d) + d; #elif SMTG_OS_MACOS return OSAtomicAdd32Barrier (d, (int32_t*)&var); #elif SMTG_OS_LINUX