I built a vst3 plugin using JUCE 7.0.6 in VS 2022 and it loads fine into the AudioPluginHost and it also runs fine in Waveform 12.
I just got a new windows 10 machine and copied the plugin built on the first machine to the new machine. When I try loading it to the AudioPluginHost, this vst3 file fails in GetProcAddress and subsequently fails the jassert in juce_VST3PluginFormat.cpp. It also fails to run in Waveform 12 on the new machine.
Next, when I try building the vst3 plugin on the new machine in VS 2022, the standalone runs fine, and it creates the vst3 object, but then fails when juce_vst3_helper.exe tries to create the moduleinfo.json by reading the vst3 file.
What’s interesting is that if I bring the vst3 built on the new machine over to the old machine, it runs fine in the AudioPluginHost and Waveform 12.
Seems to be a problem with the new machine running this plugin - regardless as to where it was built. On the new machine I was able to load Vital.vst3 into both the AudioPluginHost and Waveform 12. So it’s not like all plugins are borked on the new machine.
Any thoughts on what would cause this new machine to fail at getting the factory from the vst3 file?
The new machine is running Windows 10 Pro version 10.0.19045 Build 19045
I made some progress but still having problems. My plugin has a dependency upon libpng16.dll. I was finally able to generate moduleinfo.json by setting my link option to do delay loading using the following: /DELAYLOAD:“libpng16.dll”. I expect this is what enabled juce_vst3_helper.exe to read the vst3 file and create the json. However, when I try loading the vst3 into Waveform 12, it crashes. I suspect this is because the vst3 file still depends upon the dll.
Question is how to make a vst3 when there is a dependency upon a runtime dll. Do I need to manually load it in my code? If so, I can’t figure out why my vst3 loads fine on another machine. Does someone know the Visual Studio settings to use for building a vst that normally has runtime dependency upon a dll?
When I place the libpng16.dll next to Waveform 12 (64-bit).exe, my plugin loads and runs fine, So the question is really what is the best way to build a vst3 that depends upon a libpng16.dll. Use a static version of the lib to avoid this or load it in my plugins code so it doesn’t have to be placed in the DAW’s load path, or find a way to build my plugin in Visual Studio so that it doesn’t need the libpng16.dll.
I think statically linking to the libpng library would be the simplest solution here.
Statically linking to libpng16_static.lib and zlib.lib solved the problem