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#...
---
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