VST doesn't work on fresh Win 10 install. Works after Win update. [SOLVED]

I have finished my first VST plugin built with Juce. The plugin seems to work fine on Mac, and I have installed Windows 10 in a VM in order to build a Windows VST.

I did a fresh Windows install, installed Visual Studio 2015, and did the build (32 bit). However when I tested my .dll in FL Studio it reported an error when scanning the file. No specific error message, just “error”, and the plugin would not load in FL. Reaper was the same - my plugin was missing from Reaper’s plugin list.

I performed the same test with the Juce demo Gain plugin, which I figure is about as simple as a Juce plugin gets. The result was the same - the .dll I generated did not work in Reaper or FL.

The next time I rebooted my VM ,Windows installed some cumulative updates that it had downloaded in the background. After the reboot both FL and Reaper successfully detected my plugins, and they worked! So presumably something about the update made Windows compatible with the Juce VSTs.

So this story has a happy ending, but here’s what concerns me: both before and after Windows updated itself, all my other Win32 VSTs worked perfectly (TAL, U-He, Poulin, Synth1, etc.) It was only my Juce plugins that were broken.

My questions are:

  • Is it expected behaviour that a Juce VST would not work on a fresh Windows 10 install?

  • Is there a minimum requirement for Juce VSTs? e.g. “VSTs made with Juce 4.3.1 only work in Windows X.X.X or higher.”

  • If this is not expected behaviour, can anyone suggest why I might have run into this problem? A VS2015 setting perhaps? This is the first time I have ever used VS or published a VST so perhaps I am doing something wrong.

Alrighty, I have figured this out. It turns out that Windows VST plugins need to be built with a statically linked runtime library, as described in this thread: Do plugins need Visual Studio redistributable?

By default Projucer uses Visual Studio’s default Runtime Library setting, which I believe is “Use DLL runtime”. In VS it is called /MD or “Multi-Threaded DLL”. I gather that the /MD setting requires the end-user to have the Visual C++ Runtime Redistributable installed, otherwise the VST will break.

In my case the VST was broken until the first reboot after I installed Visual Studio. The Windows Update thing was a red herring.

Explicitly setting Runtime Library to “Use Static Runtime” in Projucer fixed the problem.