Boost logo

Boost Users :

Subject: Re: [Boost-users] "invalid signature" in boost::archive::binary_iarchive
From: Jeff Flinn (Jeffrey.Flinn_at_[hidden])
Date: 2012-05-28 07:38:05


On 5/25/2012 2:44 PM, Ibrahim Beicker wrote:
> I had to port a multi-process application to 64 bits and I rely on boost
> serialization to send messages, that are maps of key-values, into
> Microsoft queues to the other modules. It works just fine into 32 bits
> but when I run it in 64 the constructor throws an "invalid signature"
> exception
>
> void Message::fromBinary( const std::string& data )
> {
> std::stringstream ss;
> ss << data;
> boost::archive::binary_iarchive ia(ss); //exception here
>
> ia >> *this;
> }

Have you tried:

void Message::fromBinary( const std::string& data )
{
    std::istringstream ss(data, std::ios::binary);

    boost::archive::binary_iarchive ia(ss); //exception here

    ia >> *this;
}

The output side should be opened with "binary" as well. I'm surprised
this didn't cause problems with 32bit as well.

Jeff


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