|
Boost Users : |
Subject: [Boost-users] Problem with Serialization: invalid signature
From: Alexander Striffeler (a.striffeler_at_[hidden])
Date: 2013-04-04 04:59:10
Hi all
I have some trouble with the serialization of objects in C++ using
boost. Since there was some strange behaviour in the code, I tried to
serialize and deserialize a sample object isolated trying two versions:
|deSerialize(Packet p1, Packet p2){ // Version 1 using stringstreams
std::ostringstream *serialized = new std::ostringstream[2];||
||serialized[0]=std::ostringstream(std::ios_base::binary);||
||serialized[1]=std::ostringstream(std::ios_base::binary);||
||
|| boost::archive::text_oarchive oa(serialized[0]);||
|| oa << p1;||
||
|| boost::archive::text_oarchive oa2(serialized[1]);||
|| oa2 << p2;||
||
|| std::string s1, s2;||
||
|| s1 = serialized[0].str();||
|| s2 = serialized[1].str();||
||
|| //deserialize
CCNDataPkt newPacket;
std::istringstream inputStream(s2, std::ios_base::binary);
boost::archive::text_iarchive ia(inputStream);
|
| ia >> newPacket;| // throws boost::archive::archive_exception: invalid signature.
}
and
|deSerialize(Packet p1, Packet p2){ // Version 2 using ofstreams
||std::ofstream of("deleteme",std::ios_base::binary);||
|| boost::archive::binary_oarchive oa(of);||
|| oa << p1;||
||
|| std::ifstream ifstr("deleteme", std::ios_base::binary);||
|| CCNDataPkt newp;||
|| boost::archive::binary_iarchive ia(ifstr);||
|
| ia >> newp;| // boost::archive::archive_exception: invalid signature.
}
However, both variants returned an invalid signature exception even
though I haven't changed anything on the serialized data. Does anyone
know what is wrong in either of the examples above? The methods for
serializing the custom object 'Packet' are implemented according to the
boost serialization tutorial (non-intrusive version splitted)
Any hints are very much appreciated - TIA!
Cheers,
Alex
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