MessagePack C++ and Library Classes



由此,很明显你可以序列化自己的结构。我需要从外部(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'的。

注意:如果无法在 c++ 中将 msgpack 与第三方(而不是标准库)类和结构一起使用,我需要找到一个可以处理这个问题的序列化解决方案。而且,如果必须为每个要序列化的第三方类编写全面的包装器,我认为这是不可能的。一个让我需要将代码与其他上游更改同步的库只是使用它对我没有帮助。

抱歉回复晚了,但我不得不处理同样的问题,请在此处查看我的答案。

最新更新