Compilation of VST wrapper fails

I’m trying to build the VST Linux demo plugin but I’m running into this build error:

==== Building JucePluginDemo ====
juce_VstWrapper.cpp
../../../wrapper/formats/VST/juce_VstWrapper.cpp:375:29: warning: multi-character character constant
In file included from /home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:16,
                 from /home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:17,
                 from ../../../wrapper/formats/VST/juce_VstWrapper.cpp:79:
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:125: error: expected `)' before '*' token
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:126: error: expected `)' before '*' token
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:127: error: expected `)' before '*' token
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:128: error: expected `)' before '*' token
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:129: error: expected `)' before '*' token
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:130: error: expected `)' before '*' token
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:149: error: 'AEffectDispatcherProc' does not name a type
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:152: error: 'AEffectProcessProc' does not name a type
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:155: error: 'AEffectSetParameterProc' does not name a type
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:158: error: 'AEffectGetParameterProc' does not name a type
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:183: error: 'AEffectProcessProc' does not name a type
/home/anders/Development/demovst/vstsdk2.4/pluginterfaces/vst2.x/aeffect.h:187: error: 'AEffectProcessDoubleProc' does not name a type
In file included from /home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:17,
                 from ../../../wrapper/formats/VST/juce_VstWrapper.cpp:79:
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:27: error: expected `)' before 'audioMaster'
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.h:155: error: 'audioMasterCallback' does not name a type
In file included from ../../../wrapper/formats/VST/juce_VstWrapper.cpp:79:
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.h:27: error: expected `)' before 'audioMaster'
In file included from ../../../wrapper/formats/VST/juce_VstWrapper.cpp:81:
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:57: error: expected `)' before 'audioMaster'
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual void AudioEffectX::resume()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:307: warning: deprecated conversion from string constant to 'char*'
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual void AudioEffectX::__wantEventsDeprecated(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:314: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstTimeInfo* AudioEffectX::getTimeInfo(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:336: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::__tempoAtDeprecated(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:347: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'bool AudioEffectX::sendVstEventsToHost(VstEvents*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:361: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::__getNumAutomatableParametersDeprecated()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:419: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::__getParameterQuantizationDeprecated()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:427: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::ioChanged()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:448: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::__needIdleDeprecated()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:456: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::sizeWindow(VstInt32, VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:469: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual double AudioEffectX::updateSampleRate()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:480: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::updateBlockSize()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:497: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::getInputLatency()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:513: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::getOutputLatency()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:529: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual AEffect* AudioEffectX::__getPreviousPlugDeprecated(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:625: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual AEffect* AudioEffectX::__getNextPlugDeprecated(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:636: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::__willProcessReplacingDeprecated()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:658: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::getCurrentProcessLevel()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:674: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::getAutomationState()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:685: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::offlineRead(VstOfflineTask*, VstOfflineOption, bool)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:716: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::offlineWrite(VstOfflineTask*, VstOfflineOption)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:724: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::offlineStart(VstAudioFile*, VstInt32, VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:732: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::offlineGetCurrentPass()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:740: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::offlineGetCurrentMetaPass()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:748: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual void AudioEffectX::__setOutputSamplerateDeprecated(float)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:760: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstSpeakerArrangement* AudioEffectX::__getInputSpeakerArrangementDeprecated()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:767: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstSpeakerArrangement* AudioEffectX::__getOutputSpeakerArrangementDeprecated()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:778: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::getHostVendorString(char*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:793: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::getHostProductString(char*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:805: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::getHostVendorVersion()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:816: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstIntPtr AudioEffectX::hostVendorSpecific(VstInt32, VstIntPtr, void*, float)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:824: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::canHostDo(char*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:844: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual VstInt32 AudioEffectX::getHostLanguage()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:883: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual void* AudioEffectX::__openWindowDeprecated(__VstWindowDeprecated*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:891: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::__closeWindowDeprecated(__VstWindowDeprecated*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:902: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual void* AudioEffectX::getDirectory()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:913: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::updateDisplay()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:927: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::beginEdit(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:1220: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::endEdit(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:1236: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::openFileSelector(VstFileSelect*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:1250: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::closeFileSelector(VstFileSelect*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:1266: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp: In member function 'virtual bool AudioEffectX::__getChunkFileDeprecated(void*)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffectx.cpp:1282: error: 'audioMaster' was not declared in this scope
In file included from ../../../wrapper/formats/VST/juce_VstWrapper.cpp:82:
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: At global scope:
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:99: error: expected `)' before 'audioMaster'
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function 'virtual VstInt32 AudioEffect::getMasterVersion()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:203: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function 'virtual VstInt32 AudioEffect::getCurrentUniqueId()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:219: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function 'virtual void AudioEffect::masterIdle()':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:230: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function 'virtual bool AudioEffect::__isInputConnectedDeprecated(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:238: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function 'virtual bool AudioEffect::__isOutputConnectedDeprecated(VstInt32)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:247: error: 'audioMaster' was not declared in this scope
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp: In member function 'virtual void AudioEffect::setParameterAutomated(VstInt32, float)':
/home/anders/Development/demovst/vstsdk2.4/public.sdk/source/vst2.x/audioeffect.cpp:267: error: 'audioMaster' was not declared in this scope
../../../wrapper/formats/VST/juce_VstWrapper.cpp: At global scope:
../../../wrapper/formats/VST/juce_VstWrapper.cpp:344: error: expected `)' before 'audioMaster'
../../../wrapper/formats/VST/juce_VstWrapper.cpp:1483: error: 'audioMasterCallback' was not declared in this scope
../../../wrapper/formats/VST/juce_VstWrapper.cpp:1484: error: expected ',' or ';' before '{' token
../../../wrapper/formats/VST/juce_VstWrapper.cpp:1483: warning: 'pluginEntryPoint' defined but not used
make[1]: *** [build/intermediate/Debug/juce_VstWrapper.o] Error 1
make: *** [JucePluginDemo] Error 2

Aha!

I need to set:

The following also fixes the problem for me. In juce_VST_Wrapper.cpp, find this code:

#if JUCE_USE_VSTSDK_2_4
 // VSTSDK V2.4 includes..
 #include "public.sdk/source/vst2.x/audioeffectx.h"
 #include "public.sdk/source/vst2.x/aeffeditor.h"
 #include "public.sdk/source/vst2.x/audioeffectx.cpp"
 #include "public.sdk/source/vst2.x/audioeffect.cpp"

 #if JUCE_LINUX
  #define __cdecl
 #endif

 #if ! VST_2_4_EXTENSIONS

Replace it with:

#if JUCE_USE_VSTSDK_2_4
 #ifdef __GNUC__
  #define __cdecl
 #endif

 // VSTSDK V2.4 includes..
 #include "public.sdk/source/vst2.x/audioeffectx.h"
 #include "public.sdk/source/vst2.x/aeffeditor.h"
 #include "public.sdk/source/vst2.x/audioeffectx.cpp"
 #include "public.sdk/source/vst2.x/audioeffect.cpp"

 #if ! VST_2_4_EXTENSIONS

I include a copy of the modified VST_wrapper in my projects. This could/should be fixed in the wrapper shipped with Juce.

Ah! Thanks for the heads-up there, I’ll sort that out…

the complete version should be like this:

//==============================================================================
/*  These files come with the Steinberg VST SDK - to get them, you'll need to
    visit the Steinberg website and jump through some hoops to sign up as a
    VST developer.

    Then, you'll need to make sure your include path contains your "vstsdk2.3" or
    "vstsdk2.4" directory.

    Note that the JUCE_USE_VSTSDK_2_4 macro should be defined in JucePluginCharacteristics.h
*/
#if JUCE_USE_VSTSDK_2_4
 // VSTSDK V2.4 includes..
 #ifdef __GNUC__
  #define __cdecl
 #endif

 #include "public.sdk/source/vst2.x/audioeffectx.h"
 #include "public.sdk/source/vst2.x/aeffeditor.h"
 #include "public.sdk/source/vst2.x/audioeffectx.cpp"
 #include "public.sdk/source/vst2.x/audioeffect.cpp"
 
 #if ! VST_2_4_EXTENSIONS
  #error // You're probably trying to include the wrong VSTSDK version - make sure your include path matches the JUCE_USE_VSTSDK_2_4 flag
 #endif 

#else
 // VSTSDK V2.3 includes..
 #include "source/common/audioeffectx.h"
 #include "source/common/AEffEditor.hpp"
 #include "source/common/audioeffectx.cpp"
 #include "source/common/AudioEffect.cpp"

 #if (! VST_2_3_EXTENSIONS) || VST_2_4_EXTENSIONS
  #error // You're probably trying to include the wrong VSTSDK version - make sure your include path matches the JUCE_USE_VSTSDK_2_4 flag
 #endif 

 #define __aeffect__

 typedef long VstInt32;
 typedef long VstIntPtr;
 enum Vst2StringConstants
 {
   kVstMaxNameLen       = 64,
   kVstMaxLabelLen      = 64,
   kVstMaxShortLabelLen = 8,
   kVstMaxCategLabelLen = 24,
   kVstMaxFileNameLen   = 100
 };

 enum VstSmpteFrameRate
 {
    kVstSmpte24fps    = 0,  ///< 24 fps
    kVstSmpte25fps    = 1,  ///< 25 fps
    kVstSmpte2997fps  = 2,  ///< 29.97 fps
    kVstSmpte30fps    = 3,  ///< 30 fps
    kVstSmpte2997dfps = 4,  ///< 29.97 drop
    kVstSmpte30dfps   = 5,  ///< 30 drop
    kVstSmpteFilm16mm = 6,  ///< Film 16mm
    kVstSmpteFilm35mm = 7,  ///< Film 35mm
    kVstSmpte239fps   = 10, ///< HDTV: 23.976 fps
    kVstSmpte249fps   = 11, ///< HDTV: 24.976 fps
    kVstSmpte599fps   = 12, ///< HDTV: 59.94 fps
    kVstSmpte60fps    = 13  ///< HDTV: 60 fps
 };

 struct VstMidiSysexEvent
 {
	VstInt32 type;			///< #kVstSysexType
	VstInt32 byteSize;		///< sizeof (VstMidiSysexEvent)
	VstInt32 deltaFrames;	///< sample frames related to the current block start sample position
	VstInt32 flags;			///< none defined yet (should be zero)
	VstInt32 dumpBytes;		///< byte size of sysexDump
	VstIntPtr resvd1;		///< zero (Reserved for future use)
	char* sysexDump;		///< sysex dump
	VstIntPtr resvd2;		///< zero (Reserved for future use)
 };

 typedef int VstSpeakerArrangementType;
#endif

or things will not compile with vstsdk 2.3.

cheers

Thanks, kraken, but what’s the aeffect definition in there for? I can’t see anywhere that it’d be used…

there is a #ifdef aeffect inside juce_VSTMidiEventList.h, so we got VSTMidiEventList class undefined if we do not define that, because it is not present in VSTSDK 2.3.

or you can put

#if defined(__aeffect__) || defined(__AEffect__)

inside juce_VSTMidiEventList.h

hope is clear enough :slight_smile:

doh! Yes, of course - thanks for explaining!