JUCE and MSVCP100.DLL


#1

Hello!

We released a plug-in for VST/AU a while back (ABL3) which is built using JUCE, and in general seems to work fine.

But a few users have noted that they cannot launch it due to an error about a missing dll, specifically MSVCP100.DLL .

We have instructed those users to download and install the: Microsoft Visual C++ 2010 Redistributable Package (x64)  which seems to solve the problem, but this is not optimal for an audio plug-in.

So my questions are:

1) How do I avoid the plug-in requiring this dll?

2) Or, in case it really is needed how do I bundle this into the installer? Is adding the .dll where the plug-in dll resides enough?

I am using Vistual Studio 2010 to build the plug-in.

Hope someone can help. 

Thanks!

 

Best regards,

Mike Janney

Lead Developer

www.audiorealism.se

 


#2

1) How do I avoid the plug-in requiring this dll?

By linking the runtime library statically instead of dynamically.

2) Or, in case it really is needed how do I bundle this into the installer? Is adding the .dll where the plug-in dll resides enough?

You bundle the appropriate Microsoft Redistributable package (in your case this one: https://www.microsoft.com/en-us/download/details.aspx?id=14632) with your installer. Microsoft has some extensive documentation about how this should be done.


#3

Are there some caveats (besides code size) when linking the runtime statically? I read somewhere about problems when different plugins use different versions of the runtime libraries.


#4

I read somewhere about problems when different plugins use different versions of the runtime libraries.

This is only a problem if you share C++ objects or allow C++ exceptions to cross the API boundary between plug-in and host. However, the API of VST (using simple C calls) & VST3 (using .COM) are specifically designed in a way that avoids any of these problems. AAX is a bit of an exception: the visual studio runtime version does not matter, however, AAX won't work with a mingw compiler as AAX uses virtual destructors in their interface classes (classes starting with an "I") which gcc and VS put at different locations inside the v-table.


#5

Hi Guys,

Thanks for the answer..! Could anyone point me to the steps on how to statically link? 

Thanks,

Mike


#6

The Introjucer, of course: