平常没有用google protocol buffer(gpb)协议, 而是用的公司的私有化序列化工具。 最近刚好要用这个gpb, 于是搞了一把。 在工程中看了一下, 之前是有对应的gpb基础库的, 所以搞起来没那么麻烦 但也出现了好几个问题哈, 下面一一道来。
首先是用protoc生成了test.pb.h和test.pb.cc文件, 然后使用。
遇到的第一个问题是:在编译的时候提示error, 说什么版本incompatible啊, 定位原因是:makefile中没有指定到对应的gpb库的头文件, 导致test.pb.h中的变量没有获取到正确的值, 实际上就是如下的GOOGLE_PROTOBUF_VERSION 没有正确获取。
#if GOOGLE_PROTOBUF_VERSION < 2004000
#error This file was generated by a newer version of protoc which is
#error incompatible with your Protocol Buffer headers. Please update
#error your headers.
#endif
#if 2004000 < GOOGLE_PROTOBUF_MIN_PROTOC_VERSION
#error This file was generated by an older version of protoc which is
#error incompatible with your Protocol Buffer headers. Please
#error regenera