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

 2023-09-05 阅读 43 评论 0

摘要:准备 VST3 插件默认编译后都是以.vst3结尾的。做过com组件开发的人应该知道想要载入组件,首先你需要知道组件位置。那么本机装了很多个音频处理软件,我们怎么去寻找vst插件呢? 1、VST3标准定义了几个用于安装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\VSTPlugInsC:\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);
}

调用

版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/1350.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息