Thanks for reply,

All classes a, b, c and d are actually defined within one dll (one module). I forgot to mention it.
I can do this following thing:

d* pD = mew d();

and then
ar & boost::serialization::make_nvp("item", pD);

but
c* pD = new D();
ar & boost::serialization::make_nvp("item", pD);

does not work at all! It throws this strange type of exceptions which I cannot handle at all.
Another problem is that if I do the first version the member m_key variable of true_type in the call

const boost::serialization::extended_type_info * true_type =
                i.get_derived_extended_type_info(t);

is a null pointer which is not right. Do you have any idea what could be wrong?

Thanks a lot for help
___________________________________________________________
This e-mail may contain confidential and/or privileged information. If you are not the intended recipient (or have received this e-mail in error) please notify the sender immediately and delete this e-mail. Any unauthorised copying, disclosure or distribution of the material in this e-mail is prohibited.

Please refer to http://www.bnpparibas.co.uk/en/information/legal_information.asp?Code=ECAS-845C5H  for additional disclosures.