Subject: Re: [boost] [serialization] polymorphic archives runtime failure(was:polymorphic archives ... generates linker errors)
From: Bogdan (bogdan.indy_at_[hidden])
Date: 2009-12-03 19:52:40
I just want to confirm I have the same issue with boost 1.41.0 built with
MSVC 9.0 (Visual Studio 2008). I have created two tests similar to the one
Christoph describes ( both with and without DLLs) and I hit exactly the same
assert in basic_serializer_map::find().
It looks like while deserializing B via A*,
basic_iarchive_impl::load_pointer() is trying to recover a serializer from:
rchive> >, depending on the input archive actually used)
but that map is empty.
I checked boost::serialization::singleton<
archive> > in the first line of my program and it contains correctly two
serializers (one for A and one for B, respectively), proving that the macro
BOOST_CLASS_EXPORT_IMPLEMENT(.) has registered those classes.
I am not sure why the serializers for A and B do not register with the
specific polymorphic archives but only with the base archive. I was under
the impression that the polymorphic archives are meant to make that process
transparent to the user (especially future archives that are created later).
I appreciate any feedback about this issue and please let me know if you
need more details.
I am using extended type_info_no_rtti.
Deserializing via isomorphic pointers (B*->ser->dser->B*) is working.
Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk