From 63ac579c1b03320c53ff592a1cf71de1b29ea0c7 Mon Sep 17 00:00:00 2001 From: attila Date: Thu, 14 Oct 2021 16:19:44 +0200 Subject: [PATCH] VST3 Client: Fix build when JUCE_VST3_CAN_REPLACE_VST2 is enabled --- .../VST3/juce_VST3_Wrapper.cpp | 1 + .../utilities/juce_ExtensionsVisitor.h | 15 +++++++++++++++ 2 files changed, 16 insertions(+) diff --git a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp index af923bb286..2263c6aaca 100644 --- a/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp +++ b/modules/juce_audio_plugin_client/VST3/juce_VST3_Wrapper.cpp @@ -65,6 +65,7 @@ JUCE_BEGIN_NO_SANITIZE ("vptr") namespace Vst2 { + struct AEffect; #include "pluginterfaces/vst2.x/vstfxstore.h" } diff --git a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h index 64e3179be5..bfed95b273 100644 --- a/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h +++ b/modules/juce_audio_processors/utilities/juce_ExtensionsVisitor.h @@ -44,6 +44,21 @@ typedef struct ComponentInstanceRecord* AudioComponentInstance; typedef AudioComponentInstance AudioUnit; //============================================================================== +/* If you are including the VST headers inside a namespace this forward + declaration may cause a collision with the contents of `aeffect.h`. + + If that is the case you can avoid the collision by placing a `struct AEffect;` + forward declaration inside the namespace and before the inclusion of the VST + headers, e.g. @code + + namespace Vst2 + { + struct AEffect; + #include + #include + } + @endcode +*/ struct AEffect; //==============================================================================