[PD-dev] Symbol not found with Xcode

Kjetil Matheussen k.s.matheussen at gmail.com
Thu Mar 10 09:45:21 CET 2016


On Wed, Mar 9, 2016 at 9:54 PM, Pierre Guillot <guillotpierre6 at gmail.com>
wrote:

> Hi all,
>
> I'm working on a plugin that dynamically loads PD patches. Everything
> works fine, I even manage the multiple instances issue. You can take a look
> at it if you want : https://github.com/pierreguillot/Camomile. My problem
> is that the plugin can't load dynamically the external libraries (I tried
> with freeverb~ and other libraries and I got : Symbol not found: _s_signal
>   Referenced from:
> /Users/Pierre/GitHub/Camomile/Patches/freeverb~.pd_darwin
>   Expected in: flat namespace).
> I don't have any linker flag and I set up this set of macros for the
> preprocessor:
> PD=1
> HAVE_UNISTD_H=1
> USEAPI_DUMMY=1
> HAVE_ALLOCA_H=1
> HAVE_LIBDL=1
> PD_INTERNAL=1
> I use Xcode 7.2.1 with LLVM and OSX 10.9 for the deployment target
> (required for c++11 support). I going to try on Linux but if anybody has a
> clue for Mac I would be grateful (I must use Xcode because it's a JUCE
> project).
>
>
libpds has the same problem. If I remember correctly, the problem
is that you have to link your plugin with RTLD_GLOBAL in order
for your externals to see the symbols, but you
don't control how the host loads your plugin. But even if you could
(and you probably can if you make a wrapper plugin that loads your
actual plugin), it wouldn't work very well since you would get lots
of symbol clash when trying to load a second instance of your plugin.

So what I did in libpds was to statically link all externals (in pd
extended)
into libpds [1]. Of course, that's not exactly a perfect solution, but it's
a lot better
than not being able to use any external.

Maybe it's possible to create your own linker system that somehow fixes
it though, I don't know.

[1] https://github.com/kmatheussen/libpd/blob/master/make.scm
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-dev/attachments/20160310/0f44cf9b/attachment.html>


More information about the Pd-dev mailing list