Robert, I really like the boost serialization library. However, I am having a similar compiler error with VC71. I am trying to use the following code for all STL collections. template void LoadFromXml(const std::string &sXmlText, TValue &oValue) { std::istringstream oInStream(sXmlText); assert(oInStream.good()); boost::archive::xml_iarchive oIn(oInStream); oIn >> BOOST_SERIALIZATION_NVP(oValue); // restore from XML archive. } When the VC71 uses Multi-threaded Debug DLL (/MDd) setting, it generates the following compiler error: C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7 \include\boost\serialization\split_free.hpp(55) : error C2780: 'void boost::archive::load(Archive &,T &)' : expects 2 arguments - 3 provided C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7 \include\boost\archive\detail\iserializer.hpp(514) : see declaration of 'boost::archive::load' C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7 \include\boost\serialization\split_free.hpp(54) : while compiling class- template member function 'void boost::serialization::free_loader::invoke(Archive &,T &,const unsigned int)' with [ Archive=boost::archive::xml_iarchive, T=std::vector ] C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7 \include\boost\serialization\split_free.hpp(70) : see reference to class template instantiation 'boost::serialization::free_loader' being compiled with [ Archive=boost::archive::xml_iarchive, T=std::vector ] C:\Program Files\Microsoft Visual Studio .NET 2003\Vc7 \include\boost\serialization\vector.hpp(79) : see reference to function template instantiation 'void boost::serialization::split_free>(Archive &,T &,const unsigned int)' being compiled with [ Archive=boost::archive::xml_iarchive, _Ty=int, T=std::vector ] Changing the setting to Multi-threaded Debug (/MTd), everything works well. I could not figure out why. Could you please help me? Thanks Yang