
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.

Which version of boost are you using? Robert Ramey picca@synchrotron-soleil.fr 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.

Same proble I met. ver is 1.33.1 <picca@synchrotron-soleil.fr> ??????:20060619091108.96b19bb2.picca@synchrotron-soleil.fr...
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.

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@synchrotron-soleil.fr 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.
participants (3)
-
Adrian
-
piccaï¼ synchrotron-soleil.fr
-
Robert Ramey