2
을 사용하여 zeromq를 통해 벡터 보내기 vector
(struct
)을 ZeroMQ를 통해 msgpack과 직렬화하여 보낼 수 없습니다.msgpack
data
내가 내 sbuffer
또는 message_t
잘못을 구성 셨나요 std::vector<MyData>
msgpack::sbuffer sbuf;
msgpack::pack(sbuf, data);
zmq::message_t msg(sbuf.data(), sizeof(char *) * sbuf.size(), NULL, NULL);
local_socket->send(msg); // this is just zeromq's send function
입니다 : 송신 측에
struct MyData
{
MyData() : id(0), x(0), y(0), a(0) {}
MyData(const Obj &r) : id(0), x(r.pose[0]), y(r.pose[1]), a(r.pose[2]) {}
MyData(const Obj *r) : id(0), x(r->pose[0]), y(r->pose[1]), a(r->pose[2]) {}
double id;
double x;
double y;
double a;
MSGPACK_DEFINE(id, x, y, a);
};
:
그것은이 구조체의 벡터이다 ? 수신 측에
: I가
msg.data()
여부를 캐스팅했는데하지만 난 ZeroMQ와 messagepack와 함께 작동하는 방법에 대한 좋은 문서를 찾을 수없는 경우
는 잘 모르겠어요.
terminate called after throwing an instance of 'msgpack::type_error'
what(): std::bad_cast Aborted
내가 어떤 도움을 주셔서 감사합니다 :
message_t msg;
server_socket->recv(&msg);
msgpack::unpacked unpacked;
msgpack::unpack(&unpacked, reinterpret_cast<char*>(msg.data()), msg.size());
msgpack::object obj = unpacked.get();
std::vector<MyData> data;
obj.convert(&data);
printf("size %d\n", data.size());
나는 다음과 같은 오류가 발생합니다.