#include using namespace std; #include #include #include class __declspec(dllexport) A { public: A(std::string a) { m_name = a; } virtual ~A() {}; virtual void anA() = 0; std::string m_name; template void serialize(Archive &ar, const unsigned int version) { ar & m_name; } }; class __declspec(dllexport) B :public A { public: B() : A("A Derived") {}; virtual ~B() {}; virtual void anA() { cout << "An A" << endl; } virtual void aB() = 0; template void serialize(Archive &ar, const unsigned int version) { ar & boost::serialization::base_object(*this); } }; class __declspec(dllexport) C : public B { public: C() {}; C(std::string a): B() { m_string = a; cout << "Done C" << endl; }; virtual ~C() {}; virtual void aB() { cout << "A B" << endl; } std::string m_string; template void serialize(Archive &ar, const unsigned int version) { ar & boost::serialization::base_object(*this); ar & m_string; } }; BOOST_CLASS_EXPORT(C); static C bla("Mr C");