【问题标题】:boost::archive::binary_(i/o)archive portabilityboost::archive::binary_(i/o)归档可移植性
【发布时间】:2011-11-15 11:30:20
【问题描述】:

boost 二进制存档是否可以从一台 Linux x86_64 机器“移植”到另一台 Linux x86_64 机器?

文档表明它是,通过使用术语native binary,但是,我还没有能够做到这一点。是“我的错”,还是不可能?

我确实知道可移植二进制存档,但我知道它们没有经过很好的测试......

编辑:除了 SoapBox 的回答,我发现两台机器上的 boost 库版本需要相同

【问题讨论】:

  • NetCDF 是一种出色的可移植二进制格式...

标签: c++ serialization boost binary-serialization


【解决方案1】:

如果两台机器都是 x86-64 CPU 上相同版本的 64 位 Linux,那么您不需要任何特殊的“可移植性”代码或选项。根据定义,这两台机器的二进制格式是相同的。如果一台机器可以加载存档,那么另一台也可以。

这不能保证,但只要底层硬件相同,在不同的操作系统上通常仍然如此。 (也就是说,x86-64 上的 64 位窗口应该能够加载在 64 位 Linux x86-64 上创建的存档。)

如果处理器不同,那么您需要使用“便携式”存档格式。 Boost.Serialization 的文本档案应该是可移植的,因为转换为不可移植的二进制表示是在加载时从档案中的文本完成的。

【讨论】:

    【解决方案2】:

    迟到了,但是 FWIW,boost 序列化库中有一个可移植的二进制存档示例。它应该比文本存档更快,但我没有亲自运行测试。

    https://www.boost.org/doc/libs/1_70_0/libs/serialization/example/

    以下文件几乎可以复制并粘贴到您的项目中:

    portable_binary_archive.hpp

    portable_binary_oarchive.cpp

    portable_binary_oarchive.hpp

    portable_binary_iarchive.cpp

    portable_binary_iarchive.hpp

    portable_binary_oarchiveportable_binary_iarchive 类可用作替代,例如,文本或非便携式二进制存档类。

    【讨论】:

      猜你喜欢
      • 2012-05-28
      • 2017-10-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-05-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多