сериализация — MessagePack C ++ и библиотечные классы

От этот, кажется довольно ясным, что вы можете сериализовать свои собственные структуры. Мне нужно сериализовать структуры из внешней (на языке C) библиотеки. Как вы используете msgpack со структурами / классами, которые вы не можете изменить?

Вроде как, просто концепция того, что я хочу сделать:

#include <foo.h>
#include <msgpack.hpp>

FooObj* fo, fo2;
fo->bar    = 0x00ff0000;
fo->lounge = 0x0000ff00;
fo->saloon = 0x000000ff;

msgpack::sbuffer sbuf;
msgpack::pack(sbuf, *fo);

//send as msg / recv as req

msgpack::unpacked unpacked;
msgpack::unpack(&unpacked, reinterpret_cast<char*>(req.data()), req.size());
msgpack::object obj = unpacked.get();

// convert it back into Foo
obj.convert(*bp);

Чтобы быть более ясным, ошибка, которую я должен избежать /usr/include/msgpack/object.hpp:218:4: error: no member named 'msgpack_pack' in 'Foo' от компоновщика.

Примечание: если невозможно использовать msgpack в c ++ со сторонними — не стандартными библиотеками — классами и структурами, мне нужно найти решение для сериализации, которое справится с этим. И, если нужно написать всеобъемлющие обертки для каждого стороннего класса, который будет сериализован, я считаю, что это невозможно. Библиотека, которая заставляет меня синхронизировать код с Другой изменения вверх по течению просто используйте это не полезно для меня.

1

Решение

Извините за поздний ответ, но мне просто пришлось разобраться с той же проблемой, см. Мой ответ Вот.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]