After having successfully sticked to statically linked libraries including statically linked runtime library for all my Windows plugin projects until now, I’m now having to use a third party library that is only available as dll and which is built against a dynamically linked runtime library.
While I have a clear idea what static vs. dynamic linkage means technically, I’m not so sure about how to properly deploy a plugin along with dlls it depends on, doing 99% of my work on Mac OS, I’m lacking some knowledge of what’s the right way to organize all this on windows.
First question: Where to put the external library?
If both, vst3 and aax versions of the plugin need the library, where should it live? I found this resource on the order of where dlls are searched. However, it is specific to applications. It says that it first looks in “The directory from which the application loaded.”. In case of a plugin, does this translate to “next to the plugins dll”? If this works, is that recommended (as it would basically mean that I had to copy it twice for each plugin format)? Or is a system location recommended? But if so, how is it ensured that no other installer would overwrite the library with another version of it or whatnot?
Second question: How to handle the Visual C++ redistributable?
In this help article microsoft describes the differences between Central Deployment and Local Deployment. I get the feeling that Central Deployment is the way to go…? As I don’t use a msi based installer but an Inno Setup based one, I guess I have to use the Redistributable package exe, right? Are there any examples on using that along with Inno?