protocol buffer编译错误

1、 Required fields are not allowed in proto3

原因:proto2和proto3的语法不同,proto3”仅仅支持repeated字段修饰,如果使用不支required,optional。针对不同版本要对应不同语法:

proto2语法:

syntax = "proto2";

message Person
{
    required string name = 1;
    required int32 id = 2;
    required string email = 3;

}

proto3语法:

syntax = "proto3";

message Person
{
    string name = 1;
}

2、No syntax specified for the proto file: addrBook.proto. Please use 'syntax = "proto2";' or 'syntax = "proto3";' to specify a syntax version. (Defaulted to proto2 syntax.)

在proto文件最开头加上:

syntax = "proto2"; 或者 syntax = "proto3";

即可。

3、Explicit default values are not allowed in proto3.

因为在message里面定义元素时:

message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

proto3不支持:  [default = HOME]

改为

message PhoneNumber {
    required string number = 1;
    optional PhoneType type = 2 [default = HOME];
  }

即可。

4、undefined reference to `google::protobuf::internal::VerifyVersion(int, int, char const*)'

编译时添加:`pkg-config --cflags --libs protobuf` 如下:

g++ writeMsg.cpp addrBook.pb.cc -o writeMsg `pkg-config --cflags --libs protobuf`

即可编译成功

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值