Boost 序列化后 Linux 和 Windows 之间不能反序列化的问题

小菜_默 2019-02-14 11:16:57

问题描述:在 Ubuntu 16.04 中使用 Boost 进行序列化,存储到文件,然后放到 Windows 7 中进行反序列化。反之亦然。

提示错误: incompatible native format - size of long

Boost 版本号:1.66.

在 Ubuntu 和 Win7 中分别对一个 int 进行序列化,结果如下:

Ubuntu 序列化结果

1 00000000: 1600 0000 0000 0000 7365 7269 616c 697a ........serializ
2 00000010: 6174 696f 6e3a 3a61 7263 6869 7665 1000 ation::archive..
3 00000020: 0408 0408 0100 0000 0000 0000 00ff 0300 ................
4 00000030: 00


Win7 序列化结果:

1 00000000: 1600 0000 0000 0000 7365 7269 616c 697a ........serializ
2 00000010: 6174 696f 6e3a 3a61 7263 6869 7665 1000 ation::archive..
3 00000020: 0404 0408 0100 0000 0000 0000 00ff 0300 ................
4 00000030: 00


差异只在 第三行的第一个字节。
...全文
255 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复
小菜_默 2019-02-14
  • 打赏
  • 举报
回复
已经确认问题的原因, Windows是使用的数据模型为 LLP64,Linux 使用的数据模型为 LP64,导致序列化检查 long 型时长度不一致。

还没有更好的解决方案。

23,110

社区成员

发帖
与我相关
我的任务
社区描述
Linux/Unix社区 应用程序开发区
社区管理员
  • 应用程序开发区社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧