boost :: archive :: binary_(i / o)归档可移植性

时间:2011-11-15 11:30:20

标签: c++ serialization boost binary-serialization

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

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

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

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

2 个答案:

答案 0 :(得分:1)

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

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

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

答案 1 :(得分:0)

最近但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类可以用作dropins代替例如文本或不可移植的二进制归档类。