安装
安装依赖
autoconf
sudo apt-get install autoconf
libtool
sudo apt-get install libtool
准备源码
安装
$ ./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
版权声明:本文为spch2008原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。