我们使用boost序列化来读写数据,只是从boost 1:67切换到boost 1:73。
现在,我们无法读回以boost 1:67或更早版本写入的数据。我们得到一个archive_exception::input_stream_error异常。
检查文件将显示差异。旧文件开始于
22序列化::存档16
新文件缺少此数据。将其从文件中删除后,可以以1:73的速度读取。
但是奇怪的是,如果尝试一个小的示例程序(文档中的gps示例)也将boost 1:73生成此数据:
22序列化::存档18
您知道这些版本之间有什么更改,并且可能导致此问题吗?预先感谢您的任何提示。
我们的应用程序使用自己的派生存档类。也许我必须在那改变一些东西?
最好的祝福
Kai Benndorf
最佳答案
我自己找到了解决方法。
我们自己的文件来自例如boost::archive::text_iarchive_impl。
如果将以下代码添加到其构造函数中,它将再次起作用:
if(0 == (flags & boost::archive::archive_flags::no_header))
init();
我在text_iarchive类中找到了这段代码,该类派生自text_iarchive_impl,这对我来说很奇怪。这是一个错误,还是我应该使用另一个类来派生我们自己的存档?
关于c++ - Boost序列化的向后兼容性问题1:73,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62568739/