Я читаю в сериализованном классе из памяти, используя Boost 1.41, и получаю исключение «неподдерживаемая версия», хотя программа, которая произвела сериализованный класс, также использовала Boost 1.41.
Я использую следующееспособ чтения данных:
void ConvertMessage (const unsigned char *msgAddress)
{
MessageData messageData;
int msgSize = msgSystem.getDataSize (message); // external system returns message size
char *msgData = new char[msgSize];
memcpy (msgData, msgAddress, msgSize);
try
{
typedef boost::iostreams::basic_array_source<char> Device;
boost::iostreams::stream_buffer<Device> msgStream (msgData, msgSize);
boost::archive::binary_iarchive msg (msgStream); // exception thrown here
msg >> messageData;
}
catch (boost::archive::archive_exception const &e)
{
cout << e.what() << endl;
}
// Code to convert messageData to an internal class.
}
Я читал, что была проблема с чтением архивов из предварительного Boost 1.44 с Boost 1.44, но я вижу проблему с обеими сторонами, использующими Boost 1.41.
Я смог запустить это без проблем, когда две программы использовали те же библиотеки, что и на одном компьютере, но теперь мы находимся на разных компьютерах.
Есть ли способ проверитьчто мы на самом деле используем одни и те же версии?
Я предполагаю, что если производитель сериализации использует Boost 1.41 и я использую Boost 1.41 для десериализации данных, то проблем быть не должно,но я вижу исключение "неподдерживаемая версия" при попытке создать boost :: archive :: binary_iarchive.