Re: [Boost-users] Serialization problem with DLL & EXE
Hi Robert, With a class derived from DbObject and defined/implemented in my EXE (that use the DLL) I got archive_exception::unregistered_class. I tried to register it or to export it, but I could not make it work. *** So you put BOOST_CLASS_EXPORT(DbObject) in to a *.cpp file which is compiled as part of the exe? Yes, I do. Any Ideas? I use Version 1.38 of the library & VC8(2005). When I use BOOST_CLASS_TYPE_INFO(as in test_no_rtti.cpp sample ) for my EXE resident class, the ::get_key is never called. // get the eti record for the exported type "polymorphic_derived2" boost::serialization::extended_type_info const * const d2_eti = boost::serialization::extended_type_info::find( "polymorphic_derived2" ); works too before I start to serialize the collection. *** is this an attempt the issure raised above or is this a separate question. No separate question at all, this is the way I tried figure out if my class is really (and correctly) registered. Is this a correct way to test? How can I debug what's wrong? Thanks Andrei. _________________________________________________________________ News, entertainment and everything you care about at Live.com. Get it now! http://www.live.com/getstarted.aspx
With the VC debugger set break points in the serializaiton libray at
at boost/serialization/singleton.hpp constructors.
This will break before main is called one all statically constructed
objects.
Among these object should be those corresponding to exported datatypes.
This might help to see why the code that isn't interests us isn't getting
instantiated.
Using the no rtti version is interesting, but I don't think it will help
narrowing down this problem.
The way the system is "supposed to work" is:
in the exe, the BOOST_CLASS_EXPORT(DbObject) should
instantiate a static object which is constructed prior to invoking main.
You should be able verify that this object is included in the compile
and link image and you should be able to trap upon it's construction.
If the object is not explicitly referred to, we have to engage in
some C++/MSVC gymnastys in order to avoid it being dropped
by the compiler and/or linker.
Keep us posted on your progress.
Robert Ramey
"Andrei Popa"
participants (2)
-
Andrei Popa
-
Robert Ramey