VST3主机开发(二)——插件调用

准备

  • 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);
}

调用

评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值