Hello
I am using the trunk release of boost, and started having
problems with
multiple definitions of symbols during linking (see example
linker output
below). I can cure the problem by removing the change to
tools\build\v2\build\generators.jam introduced in revision 49800.
It
only seems to occur if the following headers:
#include
<boost/test/floating_point_comparison.hpp>
#include
<boost/lambda/lambda.hpp>
#include
<boost/lambda/bind.hpp>
are included in precompiled headers which
are included in cpp files that are
created by the antlr parser
generator. It occurs on a compilation with
darwin, but not
msvc.
It is unclear whether the generator.jam change has identified a
waekness in
the boost libraries, or there is a problem with the revision
49800 change
that only surfaces in obscure circumstances, or the change has
highlighted a
problem in my code. It can be fixed by removing the
includes from the
precompiled header. I feel this should not be
necessary
As a boost newbie it is unclear whether I should I change my code or raise
a bug report. I would be grateful for suggestions.
Nigel
Example linker
failures.
/usr/libexec/gcc/i686-apple-darwin8/4.0.1/ld: multiple definitions
of symbol
boost::test_tools::(anonymous
namespace)::check_is_close
/Volumes/RAID1/xraid/data/bifa/Dev/Projects/Bio/bin/Bio/darwin-4.0.1/release/link-static/libbio.a(BiobaseLexer.o)
definition of boost::test_tools::(anonymous namespace)::check_is_close
in section
(__DATA,__const)
/Volumes/RAID1/xraid/data/bifa/Dev/Projects/Bio/bin/Bio/darwin-4.0.1/release/link-static/libbio.a(ArrayLexer.o)
definition of boost::test_tools::(anonymous namespace)::check_is_close
in section (__DATA,__const)