Boost logo

Boost Users :

From: Robert Ramey (ramey_at_[hidden])
Date: 2006-06-20 11:27:32


I'm going to speculate as to what the problem is.

I'm suspecting that BOOST_CLASS_EXPORT is being used for
some class. Along with the #include <boost/archive/text_[i/o]archive.hpp>
this forces generation of references to hkl::affinement::Simplex but
not having a corresponding oa << ... doesn't actually instantiate
the correponding code. Offhand, I don't see a way to fix this. However
I don't imagine it should be a big problem to workaround either.

Sorry I can't give a better answer.

Robert Ramey

picca_at_[hidden] wrote:
> Hello
>
> My post is closely related to this one.
> http://lists.boost.org/boost-users/2004/12/8768.php
>
> I am trying to build a library.
> so I put a serialize template in most of my classes.
> I have no problem to create the static library.
>
> Now I have a test suit for my library. if I build it with the the
> serialization test.
>
> diffractometer::twoC::Vertical d_ref, d;
>
> stringstream flux;
> diffractometer::twoC::Vertical const & work_around = d_ref;
> boost::archive::text_oarchive oa(flux);
> oa << work_around;
> boost::archive::text_iarchive ia(flux);
> ia >> d;
>
> Everything is ok
>
> but when I comment the oa << work_around and the the ia >> d
> The compilation fail
> with tone of error like this:
>
> debug/linux2/src/libhkl.a(affinement_simplex.o): In function
> `boost::archive::detail::load_non_pointer_type<boost::archive::text_iarchive,
> hkl::affinement::Simplex>::load_standard::invoke(boost::archive::text_iarchive&,
> hkl::affinement::Simplex&)':
> /usr/include/boost/archive/detail/iserializer.hpp:375: undefined
> reference to
> `boost::archive::detail::basic_iarchive::load_object(void*,
> boost::archive::detail::basic_iserializer const&)'
> debug/linux2/src/libhkl.a(affinement_simplex.o): In function
> `boost::archive::detail::pointer_iserializer<hkl::affinement::Simplex,
> boost::archive::text_iarchive>::load_object_ptr(boost::archive::detail::basic_iarchive&,
> void*&, unsigned int) const':
> /usr/include/boost/archive/detail/iserializer.hpp:309: undefined
> reference to
> `boost::archive::detail::basic_iarchive::next_object_pointer(void*)'
> debug/linux2/src/libhkl.a(affinement_simplex.o): In function
> `~void_caster_primitive':
> /usr/include/boost/serialization/void_cast.hpp:132: undefined
> reference to
> `boost::serialization::void_cast_detail::void_caster::~void_caster()'
> /usr/include/boost/serialization/void_cast.hpp:132: undefined
> reference to
> `boost::serialization::void_cast_detail::void_caster::~void_caster()'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `boost::serialization::detail::extended_type_info_typeid_1<hkl::geometry::Kappa
> const>::export_register(char const*)':
> /usr/include/boost/serialization/extended_type_info_typeid.hpp:101:
> undefined reference to
> `boost::serialization::extended_type_info::key_register(char const*)'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `pointer_oserializer':
> /usr/include/boost/archive/detail/oserializer.hpp:226: undefined
> reference to
> `boost::archive::detail::archive_pointer_oserializer<boost::archive::text_oarchive>::archive_pointer_oserializer(boost::serialization::extended_type_info
> const&)' /usr/include/boost/archive/detail/oserializer.hpp:236:
> undefined reference to
> `boost::archive::detail::archive_pointer_oserializer<boost::archive::text_oarchive>::~archive_pointer_oserializer()'
> /usr/include/boost/archive/detail/oserializer.hpp:226: undefined
> reference to
> `boost::archive::detail::archive_pointer_oserializer<boost::archive::text_oarchive>::archive_pointer_oserializer(boost::serialization::extended_type_info
> const&)' /usr/include/boost/archive/detail/oserializer.hpp:236:
> undefined reference to
> `boost::archive::detail::archive_pointer_oserializer<boost::archive::text_oarchive>::~archive_pointer_oserializer()'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `pointer_iserializer':
> /usr/include/boost/archive/detail/iserializer.hpp:332: undefined
> reference to
> `boost::archive::detail::archive_pointer_iserializer<boost::archive::text_iarchive>::archive_pointer_iserializer(boost::serialization::extended_type_info
> const&)' /usr/include/boost/archive/detail/iserializer.hpp:341:
> undefined reference to
> `boost::archive::detail::archive_pointer_iserializer<boost::archive::text_iarchive>::~archive_pointer_iserializer()'
> /usr/include/boost/archive/detail/iserializer.hpp:332: undefined
> reference to
> `boost::archive::detail::archive_pointer_iserializer<boost::archive::text_iarchive>::archive_pointer_iserializer(boost::serialization::extended_type_info
> const&)' /usr/include/boost/archive/detail/iserializer.hpp:341:
> undefined reference to
> `boost::archive::detail::archive_pointer_iserializer<boost::archive::text_iarchive>::~archive_pointer_iserializer()'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `~pointer_oserializer':
> /usr/include/boost/archive/detail/oserializer.hpp:184: undefined
> reference to
> `boost::archive::detail::archive_pointer_oserializer<boost::archive::text_oarchive>::~archive_pointer_oserializer()'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `~pointer_iserializer':
> /usr/include/boost/archive/detail/iserializer.hpp:197: undefined
> reference to
> `boost::archive::detail::archive_pointer_iserializer<boost::archive::text_iarchive>::~archive_pointer_iserializer()'
> /usr/include/boost/archive/detail/iserializer.hpp:197: undefined
> reference to
> `boost::archive::detail::archive_pointer_iserializer<boost::archive::text_iarchive>::~archive_pointer_iserializer()'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `~pointer_oserializer':
> /usr/include/boost/archive/detail/oserializer.hpp:184: undefined
> reference to
> `boost::archive::detail::archive_pointer_oserializer<boost::archive::text_oarchive>::~archive_pointer_oserializer()'
> debug/linux2/src/libhkl.a(geometry_kappa.o): In function
> `boost::archive::detail::pointer_iserializer<hkl::geometry::Kappa,
> boost::archive::text_iarchive>::load_object_ptr(boost::archive::detail::basic_iarchive&,
> void*&, unsigned int) const':
> /usr/include/boost/archive/detail/iserializer.hpp:309: undefined
> reference to
> `boost::archive::detail::basic_iarchive::next_object_pointer(void*)'
> collect2: ld returned 1 exit status
>
> So the question is how can I avoid all this ?
>
> Have a nice day.


Boost-users list run by williamkempf at hotmail.com, kalb at libertysoft.com, bjorn.karlsson at readsoft.com, gregod at cs.rpi.edu, wekempf at cox.net