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