I made a generic standalone application that dynamically loads a vst. Here is the code, that loads
/Library/Audio/Plug-Ins/VST/test.VST
class JUCEHelloWorldApplication : public JUCEApplication { public: //============================================================================== JUCEHelloWorldApplication() {} //============================================================================== void initialise (const String& commandLine) { helloWorldWindow = new StandaloneFilterWindow("Hello", Colour(30, 30, 30), nullptr); helloWorldWindow->setVisible(true); } void shutdown() { // This method is where you should clear-up your app's resources.. // The helloWorldWindow variable is a ScopedPointer, so setting it to a null // pointer will delete the window. helloWorldWindow = nullptr; } //============================================================================== const String getApplicationName() { return "Hello World for JUCE"; } const String getApplicationVersion() { // The ProjectInfo::versionString value is automatically updated by the Jucer, and // can be found in the JuceHeader.h file that it generates for our project. return ProjectInfo::versionString; } bool moreThanOneInstanceAllowed() { return true; } void anotherInstanceStarted (const String& commandLine) { } private: ScopedPointer<StandaloneFilterWindow> helloWorldWindow; }; // This kicks the whole thing off.. START_JUCE_APPLICATION (JUCEHelloWorldApplication) AudioProcessor* createPluginFilter() { AudioPluginFormatManager formatManager; formatManager.addDefaultFormats(); PluginDescription desc; desc.pluginFormatName = "VST"; desc.fileOrIdentifier = "/Library/Audio/Plug-Ins/VST/test.VST"; String errorMessage; return formatManager.createPluginInstance(desc, 44100.0f, 512, errorMessage); }
This works well on OSX 32bits and all Windows flavors, but on OSX64, quitting the app causes the following crash:
Thread 0 Crashed:: Juce Message Thread Dispatch queue: com.apple.main-thread 0 libobjc.A.dylib 0x00007fff841fd4d5 realizeClass(class_t*) + 34 1 libobjc.A.dylib 0x00007fff841fd5bd realizeClass(class_t*) + 266 2 libobjc.A.dylib 0x00007fff841f209f prepareForMethodLookup + 80 3 libobjc.A.dylib 0x00007fff841f1eef lookUpMethod + 71 4 libobjc.A.dylib 0x00007fff841f02fc objc_msgSend + 188 5 libobjc.A.dylib 0x00007fff841f2236 _class_initialize + 310 6 libobjc.A.dylib 0x00007fff841f20f3 prepareForMethodLookup + 164 7 libobjc.A.dylib 0x00007fff841f1eef lookUpMethod + 71 8 libobjc.A.dylib 0x00007fff841f02fc objc_msgSend + 188 9 com.apple.AppKit 0x00007fff8c239401 -[NSView setNextKeyView:] + 314 10 com.apple.AppKit 0x00007fff8c282c69 -[NSView _removeFromKeyViewLoop] + 94 11 com.apple.AppKit 0x00007fff8c282476 -[NSView _finalizeWithReferenceCounting] + 784 12 com.apple.AppKit 0x00007fff8c28213e -[NSView dealloc] + 42 13 com.apple.CoreFoundation 0x00007fff8688628a CFRelease + 170 14 com.apple.CoreFoundation 0x00007fff868c3efc -[__NSArrayI dealloc] + 140 15 libobjc.A.dylib 0x00007fff841f4230 (anonymous namespace)::AutoreleasePoolPage::pop(void*) + 464 16 com.apple.CoreFoundation 0x00007fff868add72 _CFAutoreleasePoolPop + 34 17 com.apple.Foundation 0x00007fff885f447a -[NSAutoreleasePool drain] + 154
This happens with every VST I've tried, so I don't think the plugins are the cause. Any idea what's going wrong, and how to fix it ?
Thanks in advance,
P@
PS. Using Juce 3.0.1