之前公司培训简单使用过protobuf,然后在工作中一直没用,基本忘记了。
最近做一个新项目,网络层传输需要使用protobuf序列化,重新学习了下。
1.安装protobuf
在github上下载或者官方网站上下载安装包。
解压安装包
unzip protobuf-2.4.1.zip 或者 tar -zxvf protobuf-2.4.1.tar.gz
cd protobuf-2.4.1
./configure
make
make check
sudo make install
若在make check出现错误,“tupxxx” file not found,则./autogen.sh
如果没有安装autoconf,则需要安装一下autoconf
安装成功后
protoc --version可以查看安装版本。
2. 写.proto文件
package trhd.game.proto;
message RequestVoice { optional uint32 ucMsgId = 1; optional uint32 nVoiceId = 2; }
限定修饰符:optional(可选),required(必须赋值),repeated(包含多个元素)
proto类型:
写好了.proto文件后,对proto文件进行编译,生成可用的cpp文件或者java文件等
生成cpp:
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/yourFile.proto如果提示使用.代替目录,则:protoc -I=. --cpp_out=. yourFile.proto生成.h文件与.cc文件后,在项目中导入实例化一个对象,赋值,序列化等