c++ - MessagePack C++ 和库类

标签 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' from链接器。

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

最佳答案

抱歉回复晚了,但我刚刚处理了同样的问题,请参阅我的回答here .

关于c++ - MessagePack C++ 和库类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19966654/

相关文章:

javascript - 将 serialize() 转换为对象数组以发布到 Controller

c++ - 从 Fortran 调用 C 函数,其中 C 函数名称最初是从 C 传入的

c++ - RegisterClassObjects() 找不到要注册的类

c++ - 运行时的 Vtable 修改

c++ - 仅双击运行时 basic_string 析构函数上的 qt C++ 异常

c++ - 如何使用 boost C++ 反序列化对和对象的 vector

serialization - 序列化 PHP SOAPClient 对象

linux - 如何使用应用程序部署 Qt 库?

c++ - 在共享库和 main 之间共享全局数据

c - 如何在两个应用程序之间共享一个共享库(*.so)实例