Boost logo

Boost Users :

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


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net