protobuf 安装与使用

安装

安装依赖

autoconf

sudo apt-get install autoconf

libtool

 sudo apt-get install libtool
准备源码
  • 下载源码 protobuf 2.6.1
  • 解压 unzip protobuf-2.6.1.zip
  • 下载gtest googletest-release-1.5.0.zip
  • unzip googletest-release-1.5.0.zip ; mv googletest-release-1.5.0 protobuf-2.6.1/gtest
安装
$ ./autogen.sh
$ ./configure
$ make
$ make check
$ make install

使用

定义协议

创建person.proto

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

编译协议

$ protoc person.proto --cpp_out=.
$ ls
person.pb.cc person.pb.h person.proto

编码数据

#include "person.pb.h"
#include <fstream>
using std::ofstream;

int main()
{
Person person;
person.set_name("spch2008");
person.set_id(12);
person.set_email("spch2008@foxmail.com");

ofstream fout("pb_info.dat", std::ios::out | std::ios::binary);
person.SerializeToOstream(&fout);

return 0;
}
$ g++ person.pb.cc write.cc -o writer -lprotobuf
$ ./writer

数据解码

#include <iostream>
#include <fstream>
#include "person.pb.h"

using namespace std;

int main()
{
ifstream fin("pb_info.dat", std::ios::in | std::ios::binary);

Person person;
person.ParseFromIstream(&fin);

cout << "name: " << person.name() << endl;
cout << "email: " << person.email() << endl;

return 0;
}
$ g++ person.pb.cc read.cc -o reader -lprotobuf
$ ./reader
name: spch2008
email: spch2008@foxmail.com

疑难

protoc: error while loading shared libraries: libprotoc.so.9: cannot open shared object file: No such file or directory

export LD_LIBRARY_PATH=/usr/local/lib
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值