Thank you so much for your example!
I would like to study it, but I cannot compile it actually.
I'm using gcc-4.5.2 on an Ubuntu Linux 64 bits with boost-1.42.0.
At line 127 (boost::archive::text_oarchive toa (toafile);), it gives
me the following error:
g++ -Wall -pedantic -g -O3 -DDEBUG -march=native -std=c++0x -o
p1 p1.cxx
/tmp/cc5wHYcd.o: In function `text_oarchive':
/usr/include/boost/archive/text_oarchive.hpp:92: undefined
reference to
`boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::text_oarchive_impl(std::basic_ostream<char,
std::char_traits<char> >&, unsigned int)'
/tmp/cc5wHYcd.o: In function `~common_oarchive':
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/tmp/cc5wHYcd.o: In function `~text_oarchive_impl':
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/tmp/cc5wHYcd.o: In function `~text_oarchive':
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/tmp/cc5wHYcd.o: In function
`save_primitive<boost::archive::text_oarchive, int>':
/usr/include/boost/archive/detail/oserializer.hpp:87: undefined
reference to
`boost::archive::detail::basic_oarchive::end_preamble()'
/tmp/cc5wHYcd.o: In function `save<int>':
/usr/include/boost/archive/text_oarchive.hpp:59: undefined
reference to
`boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::newtoken()'
/tmp/cc5wHYcd.o: In function `save<int>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code,
char const*, char const*)'
/tmp/cc5wHYcd.o: In function `archive_exception':
/usr/include/boost/archive/archive_exception.hpp:45: undefined
reference to `vtable for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function
`throw_exception<boost::archive::archive_exception>':
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to `typeinfo for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function `operator<< <const
boost::archive::class_id_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/tmp/cc5wHYcd.o: In function `~common_oarchive':
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/tmp/cc5wHYcd.o: In function `~text_oarchive_impl':
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/tmp/cc5wHYcd.o: In function `~common_oarchive':
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/tmp/cc5wHYcd.o: In function
`save_primitive<boost::archive::text_oarchive,
std::basic_string<char> >':
/usr/include/boost/archive/detail/oserializer.hpp:87: undefined
reference to
`boost::archive::detail::basic_oarchive::end_preamble()'
/usr/include/boost/archive/detail/oserializer.hpp:88: undefined
reference to
`boost::archive::text_oarchive_impl<boost::archive::text_oarchive>::save(std::basic_string<char,
std::char_traits<char>, std::allocator<char> >
const&)'
/tmp/cc5wHYcd.o: In function `~common_oarchive':
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/tmp/cc5wHYcd.o: In function `~text_oarchive_impl':
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/tmp/cc5wHYcd.o: In function `~common_oarchive':
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/tmp/cc5wHYcd.o: In function `~text_oarchive_impl':
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/tmp/cc5wHYcd.o: In function `~common_oarchive':
/usr/include/boost/archive/detail/common_oarchive.hpp:38:
undefined reference to
`boost::archive::detail::basic_oarchive::~basic_oarchive()'
/tmp/cc5wHYcd.o: In function `~text_oarchive_impl':
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/usr/include/boost/archive/text_oarchive.hpp:77: undefined
reference to
`boost::archive::basic_text_oprimitive<std::basic_ostream<char,
std::char_traits<char> > >::~basic_text_oprimitive()'
/tmp/cc5wHYcd.o: In function
`save_primitive<boost::archive::text_oarchive,
boost::archive::tracking_type>':
/usr/include/boost/archive/detail/oserializer.hpp:87: undefined
reference to
`boost::archive::detail::basic_oarchive::end_preamble()'
/tmp/cc5wHYcd.o: In function
`save<boost::archive::tracking_type>':
/usr/include/boost/archive/text_oarchive.hpp:59: undefined
reference to
`boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::newtoken()'
/tmp/cc5wHYcd.o: In function
`save<boost::archive::tracking_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code,
char const*, char const*)'
/tmp/cc5wHYcd.o: In function `archive_exception':
/usr/include/boost/archive/archive_exception.hpp:45: undefined
reference to `vtable for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function
`throw_exception<boost::archive::archive_exception>':
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to `typeinfo for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function `operator<< <const
boost::archive::tracking_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/tmp/cc5wHYcd.o: In function `save<unsigned int>':
/usr/include/boost/archive/text_oarchive.hpp:59: undefined
reference to
`boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::newtoken()'
/tmp/cc5wHYcd.o: In function `save<unsigned int>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code,
char const*, char const*)'
/tmp/cc5wHYcd.o: In function `archive_exception':
/usr/include/boost/archive/archive_exception.hpp:45: undefined
reference to `vtable for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function
`throw_exception<boost::archive::archive_exception>':
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to `typeinfo for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function `operator<< <const
boost::archive::object_id_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/tmp/cc5wHYcd.o: In function
`save_primitive<boost::archive::text_oarchive, int>':
/usr/include/boost/archive/detail/oserializer.hpp:87: undefined
reference to
`boost::archive::detail::basic_oarchive::end_preamble()'
/tmp/cc5wHYcd.o: In function `save<int>':
/usr/include/boost/archive/text_oarchive.hpp:59: undefined
reference to
`boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::newtoken()'
/tmp/cc5wHYcd.o: In function `save<int>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code,
char const*, char const*)'
/tmp/cc5wHYcd.o: In function `archive_exception':
/usr/include/boost/archive/archive_exception.hpp:45: undefined
reference to `vtable for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function
`throw_exception<boost::archive::archive_exception>':
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to `typeinfo for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function `operator<< <const
boost::archive::class_id_reference_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/tmp/cc5wHYcd.o: In function
`save_primitive<boost::archive::text_oarchive, unsigned
int>':
/usr/include/boost/archive/detail/oserializer.hpp:87: undefined
reference to
`boost::archive::detail::basic_oarchive::end_preamble()'
/tmp/cc5wHYcd.o: In function `save<unsigned int>':
/usr/include/boost/archive/text_oarchive.hpp:59: undefined
reference to
`boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::newtoken()'
/tmp/cc5wHYcd.o: In function `save<unsigned int>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code,
char const*, char const*)'
/tmp/cc5wHYcd.o: In function `archive_exception':
/usr/include/boost/archive/archive_exception.hpp:45: undefined
reference to `vtable for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function
`throw_exception<boost::archive::archive_exception>':
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to `typeinfo for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function `operator<< <const
boost::archive::version_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/tmp/cc5wHYcd.o: In function `save<unsigned int>':
/usr/include/boost/archive/text_oarchive.hpp:59: undefined
reference to
`boost::archive::basic_text_oarchive<boost::archive::text_oarchive>::newtoken()'
/tmp/cc5wHYcd.o: In function `save<unsigned int>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::archive_exception(boost::archive::archive_exception::exception_code,
char const*, char const*)'
/tmp/cc5wHYcd.o: In function `archive_exception':
/usr/include/boost/archive/archive_exception.hpp:45: undefined
reference to `vtable for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function
`throw_exception<boost::archive::archive_exception>':
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/usr/include/boost/serialization/throw_exception.hpp:36: undefined
reference to `typeinfo for boost::archive::archive_exception'
/tmp/cc5wHYcd.o: In function `operator<< <const
boost::archive::object_reference_type>':
/usr/include/boost/archive/basic_text_oprimitive.hpp:88: undefined
reference to
`boost::archive::archive_exception::~archive_exception()'
/tmp/cc5wHYcd.o:(.rodata._ZTIN5boost7archive6detail15common_oarchiveINS0_13text_oarchiveEEE[typeinfo
for
boost::archive::detail::common_oarchive<boost::archive::text_oarchive>]+0x18):
undefined reference to `typeinfo for
boost::archive::detail::basic_oarchive'
collect2: ld returned 1 exit status
make: *** [boostSerialization] Error 1
Have I a too old version of the libraries maybe?
Hi
Alessandro,
Attached is a sample program that illustrates how to (de)serialize
your vector of lists of pointers to something !!!
It should address your needs to start with Boost/Serialization.
It runs on my Linux box with gcc 4.5. I hope it will work for you.
Also note that the use of plain pointers (MyObj *) in a container
can be tricky unless you can make sure you run suitable memory
deallocation code. Of course, it depends on your application but
maybe investigating the used of shared pointer (boost::shared_ptr)
could be of some interest
for you.
Hope it'd help
regards
frc
--
>>> On 14/06/2011 10:02, Alessandro Candini wrote:
Hi all.
I have a program, simplified as follows:
|#include<vector>
#include<list>
#include<fstream>
using namespace std;
class MyObj
{
int val;
public:
MyObj(int v){ val = v; };
~MyObj(){};
};
int main (int argc,char *argv[])
{
int i, j;
vector< list<MyObj*> > layers;
for(i=0; i<5; i++)
{
list<MyObj*> tmp;
for(j=0; j<10; j++)
tmp.push_back(new MyObj(j) );
layers.push_back(tmp);
}
return 0;
}|
I need to serialize/deserialize the object "layers".
Can anyone give me an example on how to do this with boost
serialization
library?
Thanks in advance.
--
Alessandro Candini
MEEO S.r.l.
Via Saragat 9
I-44122 Ferrara, Italy
Tel: +39 0532 1861501
Fax: +39 0532 1861637
http://www.meeo.it
========================================
"ATTENZIONE:le informazioni contenute in questo messaggio sono
da considerarsi confidenziali ed il loro utilizzoè riservato
unicamente
al destinatario sopra indicato. Chi dovesse ricevere questo
messaggio
per erroreè tenuto ad informare il mittente ed a rimuoverlo
definitivamente da ogni supporto elettronico o cartaceo."
"WARNING:This message contains confidential and/or proprietary
information which may be subject to privilege or immunity and
which
is intended for use of its addressee only. Should you receive
this
message in error, you are kindly requested to inform the sender
and
to definitively remove it from any paper or electronic format."
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users
_______________________________________________
Boost-users mailing list
Boost-users@lists.boost.org
http://lists.boost.org/mailman/listinfo.cgi/boost-users
--
Alessandro Candini
MEEO S.r.l.
Via Saragat 9
I-44122 Ferrara, Italy
Tel: +39 0532 1861501
Fax: +39 0532 1861637
http://www.meeo.it
========================================
"ATTENZIONE:le informazioni contenute in questo messaggio sono
da considerarsi confidenziali ed il loro utilizzo è riservato unicamente
al destinatario sopra indicato. Chi dovesse ricevere questo messaggio
per errore è tenuto ad informare il mittente ed a rimuoverlo
definitivamente da ogni supporto elettronico o cartaceo."
"WARNING:This message contains confidential and/or proprietary
information which may be subject to privilege or immunity and which
is intended for use of its addressee only. Should you receive this
message in error, you are kindly requested to inform the sender and
to definitively remove it from any paper or electronic format."