我在尝试将zexy和iemlib加载到Pd Vanilla 0.46-7时遇到了一些麻烦。从https://github.com/electrickery/pd-cyclone编译和安装旋风分离器没有问题。它工作正常。所以我尝试使用他们的二进制文件从https://github.com/iem-projects/pd-iem安装iemlib和zexy,但是发生了一些错误。当我在路径首选项下打开“详细”时,PD似乎正在寻找与我正在尝试使用的对象同名的文件。在补丁中使用[zexy / multiplex]可以得到:
tried ~/Library/Pd/zexy/multiplex.d_fat and failed
tried ~/Library/Pd/zexy/multiplex.pd_darwin and failed
tried ~/Library/Pd/zexy/multiplex/multiplex.d_fat and failed
但是没有multiplex.d_fat只有zexy.d_fat。与iemlib相同,没有dollarg.d_fat或dollarg.pd_darwin只有iem_mp3.d_fat,iem_t3_lib.d_fat,iemlib1.d_fat和iemlib2.d_fat。我猜这些文件是编译外部的地方。
我尝试使用deken和iemlib安装.pd_darwin文件,但我想这是一个旧版本(?)并且zexy仍在安装zexy.d_fat,所以我无法加载它的对象。
我也尝试在启动首选项下加载lib“zexy / zexy”,它加载正常,但后来我收到消息:
warning: class 'abs~' overwritten; old one renamed 'abs~_aliased'
我似乎松散了命名空间功能,我不能再引用[zexy / multiplex]并且只需要使用[multiplex],我猜这是正确的行为。
Pd如何知道如何在具有不同名称的文件上查找对象?
有什么建议吗?
此主题被标记为已解决http://forum.pdpatchrepo.info/topic/9677/having-trouble-with-deken-plugin-and-zexy-library-solved,听起来像是一个类似的问题,但我没有成功。
答案 0 :(得分:2)
zexy
构建为多对象库,因此zexy/multiplex
没有单独的二进制文件。
正如你已经正确猜到的那样,加载zexy的正确方法是一个整体(在你的补丁中使用[declare -lib zexy]
或者在启动库中添加zexy
(不需要使用zexy/zexy
)),并忽略有关 abs~ 的警告。
关于装载的工作方式:
[pack]
,Pd都会在其已知对象列表中查找 pack ,并使用在那里找到的信息来实际创建对象。[foo]
),那么Pd将寻找一个名为 foo 的库(例如:{{ 1}})如果找到,它将"加载"它。foo.pd_linux
)foo_setup()
。如果是,它将创建对象。现在魔术在特殊功能中完成,当Pd 加载库时调用:此功能的主要目的是告诉Pd关于新对象(基本上说:&# 34;如果有人要求对象" foo",我可以制作一个或你#34;)。
当加载zexy的特殊函数时,它告诉Pd关于所有 zexy对象(包括foo
),所以在Pd加载了zexy后,它知道如何创建{{1对象。
如果特殊函数注册了Pd 已经知道的对象(例如,在zexy的情况下,它尝试注册一个新对象multiplex
,即使Pd已经内置了同名的对象),然后Pd将通过附加[multiplex]
重命名原始对象,新注册的对象将接管名称。