Subject: Re: [boost] Suppressing boost.thread and boost.system symbolsinshared library
From: Rob Stewart (robertstewart_at_[hidden])
Date: 2013-08-01 20:48:21
On Aug 1, 2013, at 6:50 PM, Philip Bennefall <philip_at_[hidden]> wrote:
> I tested this, and while my shared library (which is the component that uses Boost internally) builds fine, when I try to link that with a test client program I get:
> .//libtest.so: undefined reference to `boost::system::system_category()'
> .//libtest.so: undefined reference to `boost::system::generic_category()'
> The client program doesn't talk to boost.system at all. Do you think this is due to the visibility options that I used while building thred and system? Should I just forget about it and leave the symbols in?
If a symbol is marked hidden by just one link record, it will be hidden, even if all of the rest are visible. In this case, the clients get references to the symbols, because of your including Boost headers, but you've marked them hidden, so that hides them for the client, too.
You should keep Boost headers out of your public headers or leave the typeinfo symbols visible.
(Sent from my portable computation engine)
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk