准备
- VST3 插件默认编译后都是以.vst3结尾的。
- 做过com组件开发的人应该知道想要载入组件,首先你需要知道组件位置。那么本机装了很多个音频处理软件,我们怎么去寻找vst插件呢?
1、VST3标准定义了几个用于安装VST3插件的目录。插件安装器将插件文件安装到该目录和子目录中。通常使用的是/Program Files/Common Files/VST3/或/Program Files (x86)/Common Files/VST3/。
2、VST2标准与VST3标准不同,没有规定标准的安装目录。在Windows环境中,每个用户环境的VST2插件的安装目录都不一样的,一般存放以下位置:
C:\Program Files\VSTPlugIns
C:\Program Files\Steinberg\VSTPlugins
3、从VST2的版本2.4开始,引入了如下的方法,将在注册表键中设置的路径作为VST2插件的标准目录。
HKEY_LOCAL_MACHINE\SOFTWARE\VST\VSTPluginsPath
载入
- 通过搜索VST插件目录,把插件路径载入内存,及插件列表。
- 官方文档提供了插件载入示例:
HMODULE hModule = LoadLibrary ("SomePlugin.dll");
if (hModule)
{
InitModuleProc initProc = (InitModuleProc)GetProcAddress (hModule, "InitDll");
if (initProc)
{
if (initProc () == false)
{
FreeLibrary (module);
return false;
}
}
GetFactoryProc proc = (GetFactoryProc)GetProcAddress (hModule, "GetPluginFactory");
IPluginFactory* factory = proc ? proc () : 0;
if (factory)
{
for (int32 i = 0; i < factory->countClasses (); i++)
{
PClassInfo ci;
factory->getClassInfo (i, &ci);
FUnknown* obj;
factory->createInstance (ci.cid, FUnknown::iid, (void**)&obj);
...
obj->release ();
}
factory->release ();
}
ExitModuleProc exitProc = (ExitModuleProc)GetProcAddress (hModule, "ExitDll");
if (exitProc)
exitProc ();
FreeLibrary (hModule);
}