Boost 序列化在 32 位和 64 位机器之间不起作用。任何其他序列化/压缩库?

ven*_*sle 4 c++ serialization boost 32bit-64bit cereal

我正在尝试使用 boost 库在 64 位机器上序列化并在 32 位机器上反序列化。但是,它似乎不起作用。(我使用 1.57.0)。

如果我运行以下代码

boost::asio::streambuf buf;
std::ostream os(&buf);
boost::archive::binary_oarchive oa(os);
printf("Buffer size %d\n",(int)buf.size());
Run Code Online (Sandbox Code Playgroud)

32位机器的输出是37,64位机器的输出是41

我可以使用其他任何好的序列化库吗?如何麦片

如果库也可以进行压缩(zlib/gzip 等),那就太好了。

seh*_*ehe 5

它确实有效。它只是不创建兼容的档案。如果你想要,你应该看看 EOS 制作的存档实现:

你可以直接用它替换 Boost 的 binary_[io]archive。无需更改任何其他内容。


附注。当然,当然,也要以与体系结构无关的方式说明您的类型。所以uint32_t,不是“size_t”