Obtuve esta excepción cuando intento deserializar a través de un archivo de texto algunos datos previamente serializados con una versión superior de boost (1.46 para serializar y 1.38 para deserializar) ... es hay una forma de degradar (en el código) la serialización? algo así como "set_library_version"? Gracias ...Boost serialización: excepción de archivo "versión no compatible"
5
A
Respuesta
4
Ver Error read binary archive, created by old boost version correo sobre el error de serialización.
Se dice que el código de abajo hace el trabajo
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);
}
}
Cuestiones relacionadas
- 1. Boost serialización/deserialización archivo "error de corriente" excepción
- 2. serialización Boost: especificando una plantilla clase versión
- 3. versión no compatible mayor.menor 49,0
- 4. ¿La biblioteca de serialización binaria boost de C++ es compatible con versiones anteriores?
- 5. C++ - boost :: cualquier serialización
- 6. Serialización Boost usando archivos polimórficos
- 7. impulso serialización excepción: clase no registrada, la serialización problema de base polimórfica
- 8. boost :: serialización alto consumo de memoria durante la serialización
- 9. C++ Boost serialización La serialización de clases derivadas de plantilla
- 10. Tipo inesperado - Excepción de serialización
- 11. serialización compatible con PHP de C/C++
- 12. Excepción en hilo java.lang.UnsupportedClassVersionError "principal": un (versión no compatible mayor.menor 51,0)
- 13. Serialización Excepción para ser arrojable
- 14. Boost serialización con punteros y constructor no predeterminado
- 15. no compatible versión de la clase de error
- 16. de error de Java StackTrace versión no compatible mayor.menor 51,0
- 17. El archivo de proyecto contiene ToolsVersion = "4.0", que no es compatible con esta versión de MSBuild
- 18. HSQLDB mensaje de excepción críptica: "característica no compatible"
- 19. boost :: python Exportar Excepción personalizada
- 20. ¿Compatibilidad de versión con serialización .NET?
- 21. excepciones de archivo de serialización de impulso de captura
- 22. "su dispositivo no es compatible con esta versión"
- 23. toma de Python 2.6 excepción compatible
- 24. boost lanzamiento de exclusión mutua (impar?) Excepción
- 25. Piñones Archivo no encontrado Excepción
- 26. ¿Debería std :: bind ser compatible con boost :: asio?
- 27. ¿cómo verificas tu versión de boost?
- 28. boost :: serialization of boost :: unordered_map
- 29. catching excepción de boost :: filesystem :: is_directory
- 30. Informar de una excepción en Boost :: test
primer lugar, gracias por su respuesta ... pero en realidad no utilizan cargar/guardar la función, sino una función única llamada serializar .. .como el ejemplo de serialización de impulso ... ¿cómo puedo hacer? – marco
El enlace habla de eso. Dice que la compatibilidad con versiones anteriores está rota "Antes de 1.44, la versión de archivo se escribía como" un byte ". Comenzando por 1.44, el tipo de versión de archivo cambiaba de 'version_type' a 'library_version_type' y se espera que se lea como dos bytes. enlace cuidadoso y recompile usando el código que pegué. Creo que esta es la única solución. –