буст 1.41 сериализация неподдерживаемая версия - PullRequest
0 голосов
/ 13 ноября 2018

Я читаю в сериализованном классе из памяти, используя 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.

1 Ответ

0 голосов
/ 14 ноября 2018

Оказывается, что программа, которая строила поток в памяти, использовала Boost 1.54, чтобы объяснить причину исключения «неподдерживаемая версия».

Я сейчас подключаюсь к той же библиотеке, и она работает нормально.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...