[FIXED] VST: Win7 ok. Win10 works once, then crashes

[EDIT – FIXED! TLDR: Set Projucer MSVS exporter settings to ‘Runtime Library: Use Static Runtime’.]

Hi all, basically what the title says.

I’m testing 64bit VST plugins in Reaper (Juce is the last 4.3.0 master commit before 4.3.1 a couple of days ago).

Win7 64 all is fine.

But Win10 64 they load in REAPER once, then crash and won’t load any subsequent sessions.

Same with the blank ‘Hello World’ plugin.

I haven’t played around with the Win build config in Projucer/MSVS yet.

Any hints on what things to try first?

Many thanks in advance!

We test 64-bit VSTs in Win 10 regularly (also in Reaper). Can you try on the latest master or latest develop?

Okay thanks I’ll try that now.

What combination are you building with? (e.g. Win7 64 + VS2015 + default Projucer settings)

Unfortunately the same issue with latest master.

I’m focussing on the default “Hello World” new blank plugin.

Leaving all .jucer settings to default, I just change the exporter architecture in Debug and Release to x64.

I’ve tried building with:

Win7 32, VS2013 & VS2015
Win7 64, VS2013 & VS2015

My Win10 is the MS Edge virtual machine image, latest Reaper. Also tried MuLab. (Both DAWs successfully load TDR Nova vst 64bit)

Any pointers greatly appreciated!

Just tried a clean install of Win10 from installation disk.

No joy :frowning:

It’s probably something stupid by me so…

Step by step here’s what I’m doing.

Projucer on Mac: (Tried 4.3.0 & 4.3.1)

  • Make default ‘hello world’ audio plugin project in Projucer
  • Rename Target Project Folder to Builds/VisualStudio2015x64
  • In Debug & Release change architecture to x64
  • Save

On Win7 virtual machine (tried Win7 32 & Win7 64, release & debug)

  • Open Visual Studio project
  • Build it

On Win10 virtual machine (tried MS Edge VM and clean install from .iso)

  • Point Reaper/Mulab to newly built DLL
  • Clear cache & rescan VSTS
  • Try load VST

VST will either load once then next session it disappears from the list. Or it’s never in the list.

Looking at Reapers reaper-vstplugins64.ini file, the plugin is listed but doesn’t have the last two fields. I’ve had other 3rd party plugins fail to load (Freakoscope on Mac) and they come up this way in the .ini file.

e.g. AAAA.dll == blank plugin project

...
reaverbate.dll=0071CABCA06FD201,1920361016,ReaVerbate (Cockos)
reavocode.dll=00FB19ACA06FD201,1919252068,ReaVocode (Cockos)
reavoice.dll=00A1B7A9A06FD201,1919252067,ReaVoice (Cockos)
reaxcomp.dll=001A24A6A06FD201,1919252579,ReaXcomp (Cockos)
AAAA.dll=00D97A9B187ED201
...

(p.s. I sent a different plugin for beta testing last year to some engineers and they complained of 64bit version not working. I’m only getting around to troubleshooting this now. This was around April 2016 time using JUCE v4.1.0. The .dll I sent out at that time is exhibiting the same behaviour.)

FIXED!!! [EDIT: See below post !!!]

By just installing the Microsoft Visual C++ 2013 runtime redistributable package. :rolling_eyes:

So the combination that worked for me is…

On Win7 32bit machine

  • Build x64 VST from Projucer generated project (JUCE v4.3.0)

On Win10 machine (clean install)

  • Try open in Reaper (works once, then fails to register in future sessions)
  • Install Microsoft Visual C++ 2013 redist from above link
  • Open in Reaper. Works!!!

(I’m sure it would work with VS2015 + 2015 redist combo too)

I guess I have to alert my users that the plugins are dependent on Visual C++ redist.

Is there any reason that Juce plugins would need the redist by default?

(Whereas something like TDR Nova (http://www.tokyodawn.net/tdr-nova/) works out of the box? i.e. no VC++ redist needed. TBH TDR’s combo boxes look decidedly JUCE-like?)

Also people need to be careful if they are testing VSTs on the same machine that has Visual Studio installed. This by default installs the Visual C++ runtimes, which may give the false impression that the plugin will run fine on other Windows installations.

Actually FIXED!!!

So a friend alerted me to the fact that users shouldn’t have to require the Visual C++ redist installed if I have the runtime flags (MT/MD etc.) set correctly.

Seems the Projucer blank plugin defaults to end-users requiring Visual C++ redist.

So…

In Projucer project Config tab

  • Visual Studio > both Debug/Release > Runtime Library
  • Set to ‘Use static runtime’

Now the end-user will not need the Visual C++ redist installed to use your plugin. More detailed info in this thread…

JUCE team: Could we get a info tooltip on the Runtime Library field explaining this in the Projucer???

I lost 2 long days to this and I’m sure many others will do the same!

Thanks all.

1 Like

Yes, we’ll add this.

1 Like

Added to the develop branch.

Brilliant thanks t0m!

And I didn’t know this…

…However, if you are linking libraries from different sources you must select the same type of runtime used by the libraries.

Thanks for the info

You also need them to be compiled using the same version of Visual Studio. See

http://siomsystems.com/mixing-visual-studio-versions/

for more info.

1 Like