But I've already tried that, as I said. It fails at runtime with an exception saying "unregistered void cast". I'll test it once more, but I don't expect different results.
Look at the pimple demo in the examples or test directory. Basically you're getting some things defined twiice.Move the implementation of template< class Archive >void serialize( Archive& archive, unsigned int version ) to the *.cppand moveBOOST_CLASS_EXPORT( rs::StaticText )
to the *.cpp file as well. compile that/those *.cpp files and include in the library. This is touched upon in the manual in the part describing EXPORT.Robert Ramey"Robert Dailey" <rcdailey@gmail.com> wrote in message news:496954360904021720o79c9c17cs18b1cf3f53da08c@mail.gmail.com...Hi,I'm currently trying to polymorphically serialize a class without using RTTI. I'm doing this currently in a file called StaticText.hpp:#ifndef RS_GUI_WIDGETS_STATICTEXT_HPP#define RS_GUI_WIDGETS_STATICTEXT_HPP#include <boost/scoped_ptr.hpp>#include <boost/serialization/access.hpp>#include <boost/serialization/base_object.hpp>#include <boost/serialization/string.hpp>#include <boost/serialization/extended_type_info_no_rtti.hpp>#include <boost/serialization/export.hpp>#include <rs/gui/widgets/Widget.hpp>#include <rs/gui/Text.hpp>namespace rs{class StaticText : public Widget{public:StaticText( std::string const& text );void Update();void Render( RenderSystem& renderer, Camera& camera );char const* get_key() const;private:StaticText() {}template< class Archive >void serialize( Archive& archive, unsigned int version ){archive & boost::serialization::base_object<Widget>( *this );std::string text;archive & text;m_text.reset( new Text( text ) );}boost::scoped_ptr<Text> m_text;friend class boost::serialization::access;};}BOOST_CLASS_TYPE_INFO(rs::StaticText,extended_type_info_no_rtti<rs::StaticText>)BOOST_CLASS_EXPORT( rs::StaticText )#endif // RS_GUI_WIDGETS_STATICTEXT_HPPWhen I compile this into a LIB first, and then link the lib into an EXE, the linker says this (Visual Studio 2008):gui.lib(StaticText.obj) : error LNK2005: "public: static struct boost::archive::detail::guid_initializer<class rs::StaticText> const & const boost::archive::detail::init_guid<class rs::StaticText>::guid_initializer" (?guid_initializer@?$init_guid@VStaticText@rs@@@detail@archive@boost@@2ABU?$guid_initializer@VStaticText@rs@@@234@B) already defined in main.objIf I move the 2 macro calls into the StaticText.cpp file, everything compiles/links just fine but I end up getting an exception thrown at runtime that says "unregistered void cast".
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users