我正在尝试在c ++和java之间交换消息,反之亦然,但没有成功。 我已经定义了两个消息(1个从c ++发送到java,另一个用反向发送)和union类型(参见附件.proto)。
c ++代码如下:
operational_gui::OperationalMessage message;
message.set_type(operational_gui::OperationalMessage::OWNPOSITIONREPORT);
message.mutable_oprep()->set_latitude(38.5);
message.mutable_oprep()->set_longitude(-9.8);
message.mutable_oprep()->set_heading(25);
message.mutable_oprep()->set_validity(0);
message.SerializeToArray(buf, message.ByteSize());
m_pNamedPipeSocket->write(buf, message.ByteSize());
m_pNamedPipeSocket->flush();
java代码如下:
int bytes = pipe.read(buffer);
MessagesProtos.OperationalMessage message = MessagesProtos.OperationalMessage.parseFrom(buffer);
switch(message.getType()){
case OWNPOSITIONREPORT:
System.out.println("Response is OwnPositionReport");
break;
case FRIENDPOSITIONREPORT:
System.out.println("Response is FriendPositionReport");
break;
case COMMSTATUSREPORT:
System.out.println("Response is CommStatusReport");
break;
}
通过管道进行通信(c ++上的QLocalSocket,java端的FileInputStream)
C ++发送33个字节,java接收它们但发生异常InvalidProtocolBufferException:协议消息包含无效标记(零)。
任何提示?
提前致谢。
答案 0 :(得分:0)
你可以尝试Qt Jambi:“[...]此外,Qt Jambi还使C ++程序员能够通过提供Qt Jambi生成器轻松地将他们的Qt代码与Java集成。”
答案 1 :(得分:0)