boost::档案:binary_ (i / o)档案的可移植性
boost::archive::binary_(i/o)archive portability
从一台Linux x86_64机器"可移植"到另一台Linux x86_64机器吗?
文档表明它是,通过使用术语native binary
,然而,我还没有能够做到这一点。是"我的错",还是这种事不可能发生?
我确实知道可移植二进制文件,但我知道它们没有经过很好的测试…
编辑:除了SoapBox的答案,我发现boost库版本需要在两台机器上是相同的
如果两台机器在x86-64 CPU上使用相同版本的64位Linux,那么您不需要任何特殊的"可移植性"代码或选项。根据定义,这两台机器的二进制格式是相同的。如果一台机器可以加载存档,那么另一台也可以。
这不能保证,但在不同的操作系统上仍然是正确的,只要底层硬件是相同的。(也就是说,x86-64上的64位windows应该能够加载在64位Linux x86-64上创建的存档。)
如果处理器不同,则需要使用"可移植"存档格式。提振。序列化的文本存档应该是可移植的,因为从存档中的文本到不可移植的二进制表示的转换是在加载时完成的。
晚了,但是顺便说一下,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_oarchive
和portable_binary_iarchive
类可以用作dropin,例如,代替文本或不可移植的二进制归档类。
- C++Union/Struct位域的实现和可移植性
- 静态库可移植性
- C++:Unicode 字符串文字的可移植性
- 如何使Visual Studio 2017 C++项目在计算机之间更具可移植性
- 在为视频游戏实施基本的二进制序列化时,请担心可移植性
- 重写类以使其更通用,以实现可移植性
- Visual Studio 2015 <=> QtCreator 5 (c++) 代码可移植性
- 通过虚拟接口类导出C 类的可移植性
- 位移位可移植性
- 如何在Visual Studio中进行串行端口编程C++Windows和Linux之间的可移植性?
- 提高 Python 可移植性问题
- 库如何在不同的操作系统之间实现可移植性
- 使用C 11 /最近的G 版本(4.7 / 4.6)的可移植性
- 模板函数实例化的可移植性问题
- XCode、命名空间、C++和代码可移植性
- 嵌入式C++项目 - 需要支持智能指针.可能的可移植性问题
- 使用指针遍历数组的可移植性
- 头文件中内联自由函数的可移植性
- 文件IO中的可移植性问题
- boost::档案:binary_ (i / o)档案的可移植性