> Why not to introduce an additional level of indirection ;)
> Just wrap the 3d-Party lib in a DLL (or Shared Object under Linux),
> than you should be find to use 2 libs with each other...
Thanks for the idea. I'll give it a try, but ideally the application should be distributed as a single executable file.
About versioning the boost namespace, I suppose you mean something like changing boost namespace to e.g. boost_1_35_0. Any thoughts on how much work it would take me to patch a given version of boost to do that? Is it even possible?
>On Wed, Jun 25, 2008 at 6:41 PM, David Abrahams <dave@boostpro.com> wrote:
> Vladimir Prus wrote:
>> dariomt@gmail.com 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.
>