5
当我试图通过文本存档反序列化一些以前用升级版本序列化的数据(1.46到serialize和1.38到反序列化)时,Iv'e得到了这个异常......是有一种方法降级(在代码中)的序列化?像“set_library_version”的东西?谢谢...Boost序列化:存档“不支持的版本”异常
当我试图通过文本存档反序列化一些以前用升级版本序列化的数据(1.46到serialize和1.38到反序列化)时,Iv'e得到了这个异常......是有一种方法降级(在代码中)的序列化?像“set_library_version”的东西?谢谢...Boost序列化:存档“不支持的版本”异常
请参阅Error read binary archive, created by old boost version邮件归档关于序列化错误。
它说,下面的代码做这项工作
void load_override(version_type & t, int version){
library_version_type lvt = this->get_library_version();
if(boost::archive::library_version_type(7) < lvt){
this->detail_common_iarchive::load_override(t, version);
}
else
if(boost::archive::library_version_type(6) < lvt){
uint_least16_t x=0;
* this->This() >> x;
t = boost::archive::version_type(x);
}
else
if(boost::archive::library_version_type(3) == lvt || boost::archive::library_version_type(5) == lvt){
#pragma message("CTMS fix for serialization bug (lack of backwards compatability) introduced by boost 1.45.")
// upto 255 versions
unsigned char x=0;
* this->This() >> x;
t = version_type(x);
}
else{
unsigned int x=0;
* this->This() >> x;
t = boost::archive::version_type(x);
}
}
首先,感谢您的回复......但实际上我不使用加载/保存功能,而是叫连载独特的功能.. 。就像boost序列化的例子...我该怎么办? – marco 2011-05-16 13:02:28
链接说到这一点。它说向后兼容性被破坏“在1.44之前,归档版本被写为”一个字节“,从1.44归档版本类型开始,从'version_type'变为'library_version_type',预计会被读为两个字节。仔细链接并使用我粘贴的代码重新编译。我认为这是唯一的解决方案。 – 2011-05-16 13:29:24