juce_VST_Wrapper - latest tip

I just upgraded my source to the latest tip. When building my project I get the following errors in juce_VST_wrapper:

…/…/Source/VST/juce_VST_Wrapper.cpp: At global scope:
…/…/Source/VST/juce_VST_Wrapper.cpp:354: error: ‘VoidArray’ does not name a type
…/…/Source/VST/juce_VST_Wrapper.cpp:1420: error: ‘VoidArray’ does not name a type
…/…/Source/VST/juce_VST_Wrapper.cpp: In constructor ‘JuceVSTWrapper::JuceVSTWrapper(VstIntPtr ()(AEffect, VstInt32, VstInt32, VstIntPtr, void*, float), juce::AudioProcessor*)’:
…/…/Source/VST/juce_VST_Wrapper.cpp:419: error: ‘activePlugins’ was not declared in this scope
…/…/Source/VST/juce_VST_Wrapper.cpp: In destructor ‘virtual JuceVSTWrapper::~JuceVSTWrapper()’:
…/…/Source/VST/juce_VST_Wrapper.cpp:437: error: ‘activePlugins’ was not declared in this scope
…/…/Source/VST/juce_VST_Wrapper.cpp:438: error: ‘activePlugins’ was not declared in this scope
…/…/Source/VST/juce_VST_Wrapper.cpp: In member function ‘virtual void JuceVSTWrapper::processReplacing(float**, float**, VstInt32)’:
…/…/Source/VST/juce_VST_Wrapper.cpp:657: error: ‘activePlugins’ was not declared in this scope
…/…/Source/VST/juce_VST_Wrapper.cpp:675: error: ‘tempChannels’ was not declared in this scope
…/…/Source/VST/juce_VST_Wrapper.cpp: In member function ‘void JuceVSTWrapper::deleteTempChannels()’:
…/…/Source/VST/juce_VST_Wrapper.cpp:1455: error: ‘tempChannels’ was not declared in this scope
make: *** [build/intermediate/Debug/juce_VST_Wrapper_436400da.o] Error 1

What can I do? Apart from making things worse by hacking away at it! Is there a straightforward fix?

I think you must have an out-of-date version of that file.

Thanks Jules, you’re right. I was building against an old version of that file. I need to manage my projects better…

Now all I get is the following error:

build/intermediate/Debug/juce_VST_Wrapper_436400da.o: In function *main': /home/rory/Dropbox/Cabbage/Builds/Linux/../../Source/VST/juce_VST_Wrapper.cpp:1532: multiple definition ofmain’
build/intermediate/Debug/StandaloneFilterApp_d9ee3663.o:/home/rory/Dropbox/Cabbage/Builds/Linux/…/…/Source/Standalone/StandaloneFilterApp.cpp:39: first defined here
collect2: ld returned 1 exit status

The error points to the following lines in juce_VST_Wrapper:

extern “C” attribute ((visibility(“default”))) AEffect* main_plugin (audioMasterCallback audioMaster) asm (“main”);

extern “C” attribute ((visibility(“default”))) AEffect* main_plugin (audioMasterCallback audioMaster)
{
return VSTPluginMain (audioMaster);
}

Commenting out one of above definitions means my app will build and link. I need to sort out a few other issues before I can tell if it works or not. Is there a betters solution to sorting this? Or don’t tell me, perhaps this has something to do with even more old code lying around?

That doesn’t make much sense… Sounds like you maybe need to do a clean build or something, you definitely don’t need to mess with those definitions.

You cannot build the VST plugin and the standalone app in the same file, so remove the standalonefilterapp.cpp from your build and it will work. They both try to define the same symbol “main” ( that’s what the ‘asm(“main”)’ stuff does for the vst plugin)

I have a few fixes for the linux VST that I’ll submit soon.

Actually I was trying to build the standalone so I only had to remove the wrapper, all works as it should now, thanks.