Late to the party...


But the bigger problem is this... running inside Ableton I found out that the functions class_new(), class_addmethod(), and post() get resolved to something other than the libpd-supplied ones - there's apparently a name clash with some dynamic library or other that Ableton Live links to.

As you have found out in the meantime, these symbols come from Max4Live :)

I can't find any way I can control the order in which dynamic linking under MacOS or linux resolves symbols.  I did get pointed to one fun article here:
You can! If you dlopen() the externals with RTLD_DEEPBIND they should look in the dynamic library itself and its dependencies (= libpd) before taking the symbol from the global namespace. Give it a try!

If you can remember, we had a similar problem with [vstplugin~] when you tried to test Camomile VST plugins inside Pd with [vstplugin~]. You got a clash between the symbols of the main Pd application and the libpd symbols from Camomile. My fix was to I dlopen() the VST plugins with RTLD_NOW | RTLD_DEEPBIND: https://git.iem.at/pd/vstplugin/-/blob/master/vst/Module.cpp?ref_type=heads#L133

---

On Windows you don't have this problem because symbols use a DLL-level namespace and there is no global symbol table. I thought that macOS also uses symbol namespaces. Does your issue really occur on macOS too?

Christof


---
pd-dev@lists.iem.at - the Pd developers' mailinglist
https://lists.iem.at/hyperkitty/list/pd-dev@lists.iem.at/message/K3OSD7GMY6GROH2E42RIRM5DB7SIO64R/

Reply via email to