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

标签 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());

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

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

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

最佳答案

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

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


附言。当然,当然,也要以独立于体系结构的方式阐明您的类型。所以 uint32_t,而不是 ``size_t`

关于c++ - Boost 序列化在 32 位和 64 位机器之间不起作用。任何其他序列化/压缩库?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30631630/

相关文章:

c++ - 包括带有 libiota 的 header

c++ - std::make_unique 和 std::unique_ptr 内部有 new 的区别

c# - 检测反序列化对象是否缺少 Json.NET 中 JsonConvert 类的字段

Python 序列化(到 JSON)问题

c++ - 是否有平面未排序的 map /集合实现?

c++ - boost multi_index_container composite_key_compare

C++ - 从客户端代码中隐藏模板参数

c# - 将非托管 dll 的 Delphi 代码转换为 C#

inheritance - 如何将 : 1. ISerialized 与 Serializer.Merge/Serialize & 2. ProtoIninclude 与 RuntimeTypeModel.Default 一起使用?

c++ - 使用带有 split_iterator 的分类器