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/