Each VST3 plugin is identified by its UID defined in the processor component not by its name or filename.
BEGIN_FACTORY_DEF ("Steinberg Media Technologies",
"http://www.steinberg.net",
"mailto:info@steinberg.de")
//---First Plug-in included in this factory-------
// its kVstAudioEffectClass component
DEF_CLASS2 (INLINE_UID_FROM_FUID(AGainProcessorUID),
PClassInfo::kManyInstances, // cardinality
Yes I do confirm that it works… here is what I ended up doing:
#ifndef NDEBUG
static const ::Steinberg::FUID JambaTestPluginProcessorUID(0x1a410f8a, 0xbfb94a04, 0x9cf832e0, 0xd3f0e2ee);
static const ::Steinberg::FUID JambaTestPluginControllerUID(0xf831107a, 0x489b4284, 0xbe16d9db, 0xe12bb012);
#define stringPluginName "JambaTestPlugin_Debug"
#else
static const ::Steinberg::FUID JambaTestPluginProcessorUID(0xaa3926ff, 0x6d324b93, 0x80f3f867, 0x9545fa05);
static const ::Steinberg::FUID JambaTestPluginControllerUID(0xbe691f77, 0x73d04d92, 0x9ef55ad4, 0x4cc563c8);
#define stringPluginName "JambaTestPlugin"
#endif
BEGIN_FACTORY_DEF ("pongasoft",
"https://www.pongasoft.com",
"support@pongasoft.com")
// JambaTestPluginProcessor processor
DEF_CLASS2 (INLINE_UID_FROM_FUID(JambaTestPluginProcessorUID),
PClassInfo::kManyInstances, // cardinality
kVstAudioEffectClass, // the component category (do not changed this)
stringPluginName, // here the Plug-in name (to be changed)
Vst::kDistributable, // means that component and controller could be distributed on different computers
Vst::PlugType::kFx, // Subcategory for this Plug-in (to be changed)
FULL_VERSION_STR, // Plug-in version (to be changed)
kVstVersionString, // the VST 3 SDK version (do not changed this, use always this define)
pongasoft::test::jamba::RT::JambaTestPluginProcessor::createInstance) // function pointer called when this component should be instantiated
....
I end up using different IDs based on NDEBUG (Debug vs Release build) as well as a different name so that it can be differentiated in the list of plugins (which usually shows the name not the UIDs…)