Dear all , The library version I used was boost_1_42, and the IDE was VS2008 . When I attempt to use the BOOST_CLASS_EXPORT_KEY macro, I met some problems. In my word, I think it doesn't work as expected . My project files are listed following (just five tiny files) : // Base.h #ifndef _BASE_H #define _BASE_H #include <boost/serialization/access.hpp> #include <boost/serialization/export.hpp> #include <boost/serialization/type_info_implementation.hpp> #include <boost/serialization/extended_type_info_no_rtti.hpp> #include <boost/serialization/base_object.hpp> #include <boost/serialization/shared_ptr.hpp> class Base { public: Base() ; Base(int a) ; virtual ~Base(); private: friend class boost::serialization::access ; template<class Archive> void serialize(Archive& ar, const unsigned int version) { ar & a_ ; } private: int a_ ; }; BOOST_CLASS_EXPORT_KEY(Base) BOOST_SERIALIZATION_SHARED_PTR(Base) #endif //_BASE_H // Base.cpp #include "Base.h" Base::Base(): a_(0){ } Base::Base( int a ): a_(a){ } Base::~Base(){ } BOOST_CLASS_EXPORT_IMPLEMENT(Base) //Derived.h #ifndef _DERIVED_H #define _DERIVED_H #include "base.h" class Derived : public Base { public: Derived(); Derived(int a, int b); ~Derived(); private: friend class boost::serialization::access ; template<class Archive> void serialize(Archive& ar, const unsigned int version) { ar & boost::serialization::base_object<Base>(*this) ; ar & b_ ; } private: int b_ ; }; BOOST_CLASS_EXPORT_KEY(Derived) BOOST_SERIALIZATION_SHARED_PTR(Derived) #endif // _DERIVED_H // Drived.cpp #include "StdAfx.h" #include "Derived.h" Derived::Derived(): b_(0){ } Derived::Derived( int a, int b ): Base(a), b_(b){ } Derived::~Derived(){ } BOOST_CLASS_EXPORT_IMPLEMENT(Derived) // main.cpp #include <fstream> #include <iostream> #include <boost/archive/text_oarchive.hpp> #include <boost/serialization/shared_ptr.hpp> #include "Derived.h" int _tmain(int argc, _TCHAR* argv[]) { boost::shared_ptr<Base> base_ptr(new Derived(10,15)) ; std::ofstream ofs("test.txt") ; boost::archive::text_oarchive oa(ofs) ; oa << base_ptr ; return 0; } There are no errors in compile-time. But when I executed the program, a memory error caused ! I don't know what is wrong about my program. Whether my usage of BOOST_CLASS_EXPORT_KEY/BOOST_CLASS_EXPORT_IMPLEMENT was wrong ? And, how can I fix the problems ? Thanks, and with my best wishes. Lei