Re: [Boost-users] [serialization] link error and exception onget_key
I got the test to work but in my own code I am getting an "unregistered void cast" exception when trying to serialize the derived type. I moved the relevant classes into a separate test and made sure everything was identical to the test I made that does work (e.g. macro placement, include order) and I still get the exception. If I move the derived class definition into the header file it works. The function definitions don't even have to be inlined, they just need to be in the header. This is very weird. I am not sure you can help but if you have any ideas I would appreciate it. Thanks, Daniel Roberts I just separated things out and things seemed to work fine. The only thing that might or might not be an issue is header order: #include <boost/serialization/type_info_implementation.hpp> #include <boost/serialization/extended_type_info_no_rtti.hpp> #include <boost/serialization/export.hpp> #include "polymorphic_derived1.hpp" BOOST_CLASS_EXPORT(polymorphic_derived1) const char * polymorphic_derived1::get_key() const { return boost::serialization::type_info_implementation< polymorphic_derived1
::type::get_const_instance().get_key(); }
Notice I specified extended_type_info_no_rtti.hpp before export.hpp. If I remember correctly, if no type id system header is specified before export is encountered the system may take the rtti one as the default. Since we're not using defaults in this example, its probably not an issue. As far as I know, no one has ever asked a question about using EXPORT without rtti before - at least no one has ever had any questions about it. You may be treading new ground here. Robert Ramey
participants (1)
-
Daniel Roberts