我的音频插件是与包含所有支持格式(如 AU 和 VST)的导出的二进制文件捆绑在一起的。我将完全相同的包(只是不同的扩展名)复制到
/Library/Audio/Plug-Ins/Components for AU
and
/Library/Audio/Plug-Ins/VST for VST
现在,当用户打开说 VST 插件时,它工作正常。但是当他之后打开 AU 插件时,它崩溃了,从堆栈跟踪来看,它看起来像一个模块调用另一个模块等等。我最初认为这是一个很好的旧 Cocoa 全局类名,是巨大的 Mac OS X 设计缺陷,但它似乎不是这样,因为 VST 使用的是 Carbon。
它似乎根本没有加载AU模块,它只是从VST模块创建了另一个组件,只是带有AU接口!我在那里有一个全局变量,所以我记录了它的地址,两个插件的地址都是一样的,所以它必须是同一个模块,对吧?
不幸的是,我确实需要为每个加载正确的,因为它们具有不同的初始化和全局变量。那么如何让操作系统正确加载第二个呢?
谢谢!