$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Dan Thill (dgt_at_[hidden])
Date: 2008-04-13 18:17:31
> I think the problem is that you are using a static library which 
> contains the serialization code. Static libraries are notorious for not 
> linking code that is never directly called. So the solution is to 
> include the object files contained in your static library into your 
> executable/dll. For Visual C++, there is no command line linker option 
> as I understand it. On gcc, you can do g++ -Wl,--whole-archive if memory 
> serves (which I'm sure it doesn't)
I'm beginning to see that this is the case.  However, there are several 
references on this list over the years for this exact organization.  It 
worked on 1.34.1 -- I suppose because BOOST_CLASS_EXPORT had to be 
called in the header file.  However, with 1.35, the new system which 
avoids the header ordering issue, which requires BOOST_CLASS_EXPORT to 
be in the implementation file, breaks this approach.  I thought that was 
one of the benefits of the new system: to better force instantiation of 
the static objects which make the registration work.
And, according to the trunk version, putting serialization code in DLLs 
is supposed to work--using the same organization I'm trying to use now. 
  But it looks like it won't work with static libs.
I'm sorry if I sound irate.  I'm just extremely frustrated.  I went 
through all the effort to put the 1.34.1 serialization into its own 
library in order to fix compilation time problems in our product.  And 
then, a few days later, 1.35 is released, breaking everything.  (and for 
various platform issues, we need to move to 1.35).
-Dan