User can't open plug-in at all (Windows 10)

Hi folks,

I’m experiencing a very weird error in production and I’ve pretty much exhausted my knowledge as to what could go wrong. For context, this is a sequencer MIDI FX plug-in (distributed as VST3) which is failing to open at all for a user on Windows 10. They’ve been very kind in helping me test some debug builds and gather additional knowledge, but I don’t feel any closer to a solution.

Here’s all the info I’ve gathered so far:

  1. My plug-in crashes for this user in any DAW. They’ve tried Ableton 12, 11, and Unify. In all of them, attempting to even load my plug-in will crash the DAW. Unify will crash just trying to scan it.
  2. I gave them a build with FileLoggers everywhere. I added one into the ctor of AudioProcessor, the Editor, and every member object for either of them. The user can find no logs on their machine, which indicates that the floggers aren’t even getting set up or running.
  3. I’ve combed through every static variable and piece of data that the AudioProcessor’s ctor is relying on it, and verified all of them are safe.
  4. I’ve fully torn out entire dependencies and pieces of complex logic that I suspected might be an issue.

As far as I can tell, my plug-in’s own code never even gets a chance to run. It doesn’t seem like my AudioProcessor ever gets initialized, and nothing within the ctor gets executed at all (creating the flogger is the first step, and every other member variable to the AudioProcessor has been given a flogger as well which never executes).

I’m almost not even sure what to ask at this point but anybody have any ideas what the root cause might be? I’m on the latest version of JUCE 8 and this is the only user experiencing anything like this.

This sounds to me like the static/dynamic linking issue. Make you’re setting the runtime to be static in CMake or the Projucer.

In CMake you need to add:

set(CMAKE_MSVC_RUNTIME_LIBRARY "MultiThreaded$<$<CONFIG:Debug>:Debug>")

In the Projucer you need to add this setting:
Screenshot 2025-05-13 at 11.13.21 AM

Oh wow, this is one of the very first things I always set in Projucer when making a new plug-in, and I just noticed that it got clobbered at some point. Thanks so much for pointing that out.

AFAIK, there’s no real downside to using the static runtime, right? I always just use it by default (except in this case, apparently :slight_smile:)

Yes, no downsides.
There used to be a reason to use dynamic linking when loading a bunch of plugins in the same session, but Microsoft fixed it around 2020.

1 Like