【问题标题】:Boost Serialize backward compatibility issuesBoost Serialize 向后兼容性问题
【发布时间】:2012-10-17 16:33:16
【问题描述】:

boost::archive::text_oarchive 在 Boost v1.47 中保存的数据无法由boost::archive::text_iarchive 在 Boost v1.37 中加载。它会抛出一个带有 meddage "unknown version" 的异常。

Here 为二进制存档的类似问题提供了一种解决方法,但它似乎不适用于文本存档。

我可以在 Boost v1.37 中进行修复吗?

【问题讨论】:

    标签: c++ serialization boost backwards-compatibility forward-compatibility


    【解决方案1】:

    您所关注的不是向后兼容性,而是向前兼容性。

    Boost.Serialization 不支持开箱即用的前向兼容性,AFAIK。 您可能在使用 xml 存档方面取得了成功,但仍需要您做一些工作。见this thread

    【讨论】:

    • 不会说我在关注前向兼容性。问题是 Boost 1.47 它不向后兼容 Boost 1.37,所以我正在努力解决这个问题。好吧,一种解决方法可能是手动使 Boost 1.37 与 Boost 1.47 前向兼容 :)
    • @Vahagn 你说(改写)“Boost v1.47 保存的数据不能被 Boost v1.37 加载”。那就是缺乏前向兼容性。如果 Boost 1.47 不是 backward compatible 和 Boost 1.37,那么 Boost 1.47 不会加载由 Boost 1.37 保存的档案
    • 顺便说一句,如果 Boost_v1.47 具有在某些 Boost_v1.37 模式 下保存存档的功能,则可以将该功能称为 Boost_v1.47 的向后兼容性,并且发布的问题将由该功能修复。