Boost logo

Boost Users :

From: David Abrahams (dave_at_[hidden])
Date: 2008-06-25 12:41:12


Vladimir Prus wrote:
> dariomt_at_[hidden] wrote:
>
>> Hi all,
>>
>> I'm using header-only boost libs in two static libraries that will be linked
>> into an executable.
>>
>> No boost components are used in the interfaces of those libs, boost is only
>> used in the implementation inside the libraries.
>>
>> Is it possible to mix versions of boost in those two static libraries? Will
>> the linker complain, or will it just get confused and mess up the
>> executable?
>
> In general, this is highly risky business. On GCC, each static library
> will contain a copy of every template function used by a static library.
> If the linker finds that the same function is used in both static libraries,
> it will put only one copy in the output executable, and if the definitions
> of those functions differ, you're in trouble. See the attached example, which,
> then run, produces:
>
> a.cpp:say
> a.cpp:say
>
> Which is clearly wrong. This *might* work with shared libraries, but you
> need to consult your toolchain documentation.

For the past few years we've had a GCC option that allows you to expose
from dynamic libs only those names you specify, sort of like declspec on
Windows. I don't remember the name of the flag, though.

-- 
Dave Abrahams
BoostPro Computing
http://www.boostpro.com

Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net