$include_dir="/home/hyper-archives/boost-users/include"; include("$include_dir/msg-header.inc") ?>
From: Hugh Hoover (hugh_at_[hidden])
Date: 2006-06-15 19:04:34
I have a test program (boost::test) for a set of my application  
classes.  When run on darwin (10.4.6, gcc4.01) the tests work  
correctly - that is, I can serialize the structure to an XML archive  
and read it back (actually, all 3 archive types).  When I run the  
same test on windows (XP sp2, vc8), the read back of the XML archive  
fails very early because it apparently can't find an appropriate  
class to instantiate.
When I look at the XML output, the windows version has a class name  
at the point where it fails, while the darwin version does not (there  
are NO class names written in the darwin archive).
The code between darwin and windows is essentially the same - there  
aren't any differences in MY code in the serialization code.
Several points:
a) The topmost level is a pointer (plain) to an abstract class - the  
concrete subclass being serialized is very simple at this point.
b) The specific class that's failing is from an STL map with pointers  
to an abstract base class.
   1) That particular failing class is successfully tested prior to  
where it fails in the same test application (output to all archive  
types and read-back).
   2) although it's using a different archive to test, initialization  
of all archives is identical (register_type and register_void_pointer  
called as appropriate)
c)  There is one other class that also gets serialized with a class  
name in addition to it's ID (I presume this means that something's up  
with class registration?)
Ok - any suggestions on how to tackle this?  I can't find anything  
wrong in the registration (i've walked through my part of the  
registration code in the debugger).
I'm using boost 1.33.1
Thanks
Hugh Hoover
Enumclaw Software