How would I find out why my 64 bit VST plug-in (built with Juce 4.2.4, vst 2 SDK) won’t show up in any DAW on the Mac? 32 bit works fine.
I have another plug-in of same type that works, so it’s unlikely a Juce issue. Since the working plug-in is configured manually (outside my configuration framework), it is difficult to compare individual build settings. Tried for hours to no avail.
- What’s the best way to dump and compare build settings and preprocessor defs?
- Any idea what I should look for?
- Any settings that can break things on 64 bit only?
- Are there tools to validate VST on OS X?
Thnaks for your help in advance.
You can try MrsWatson, had helped me before figure out my code signing certs got wrong, use it like
mrswatson64 --verbose --plugin /Path/To/Plugin.vst --display-info
Thanks. MrsWatson looks promising. Any way to avoid homebrew and cmake? I am somewhat reluctant to adding even more tools to my dev machine, which is already complex enough to maintain. Do you have a current Xcode project file to share?
I just built with cmake… but it looks like the site (http://teragonaudio.com/MrsWatson.html) also offers a built binaries download
Wow. I’m again amazed by this helpful community. Thanks a lot. MrsWatson is very useful. Got the pre-compiled binaries and tested.
Now the output is interesting, for both 32 & 64 bit:
E 00000000 000067 Couldn’t get a pointer to plugin’s main()
What is my plug-in configuration missing?
_VSTPluginMain appear when running
Nothing comes up with nm … | grep _VST even with the debug build that has all symbols included.
This is definitely the culprit, but why would this happen?
Today’s not my day. Just found it: Some VST-related files in the Juce Library Code group of the Xcode project weren’t ticked to be included with the build target! (Ouch)
I’m glad this is fixed now thanks to your help. However, isn’t it interesting how a Juce VST would still compile and link without these files?
How did you create the Xcode project, with the Projucer or by a different method?
I have several projects sharing Xcode configuration files and a common code base and plugin configuration files. Therefore I had to manually upgrade these projects that were originally built with Introjucer of Juce 3. Not ticking these files for inclusion was my own mistake.
Would be nice to have some warning if not at least one plug-in format is fully included, though.
Don’t think that’s possible. It’s kind of like writing a program but not compiling the file containing your main() function, that’s not something the other code could be expected to know about.
Understood. Code can’t do that.
An extra build phase could check for the presence of certain symbols after linking, though. Admittedly however, that’s too much effort for such a rare case. Maybe integrating MrsWatson and auval as part of one’s automated build scripts is a better idea.
For a start, one could simply add a post build step to
grep through the output of
nm checking for the expected symbol, and give error if it’s not found
One could add all these checks in the projects generated by the Projucer, but then those checks would only trigger for manually maintained Xcode/etc project files, in which the build steps could be omitted just like the files… So I see nothing that JUCE could do for this…