MessagePack C ++和库类

时间:2013-11-13 23:33:30

标签: c++ serialization shared-libraries msgpack

this开始,很明显您可以序列化自己的结构。我需要从外部(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和第三方 - 而不是标准库 - 类和结构,我需要找到一个可以处理它的序列化解决方案。并且,如果必须为每个要序列化的第三方类编写综合包装器,我认为这是不可能的。一个让我需要将代码与其他上游更改同步的库只是使用它对我没有帮助。

1 个答案:

答案 0 :(得分:0)

很抱歉迟到的回复,但我只需处理相同的问题,请参阅我的回答here