1侥蒙、根據(jù)protobuf GitHub的README.md安裝protoBuf
(1)安裝依賴工具
sudo apt-get install autoconf automake libtool curl make g++ unzip
(2)在protobuf github上獲取版本信息及源碼鏈接媚朦,用wget下載:
wget https://github.com/protocolbuffers/protobuf/releases/download/v3.7.1/protobuf-cpp-3.7.1.tar.gz
(3)解壓
tar -xzvf protobuf-cpp-3.7.1.tar.gz
(4)根據(jù)官網(wǎng)安裝教程依次執(zhí)行
cd protobuf-3.7.1
./autogen.sh
./configure
make
make check
sudo make install
sudo ldconfig
成功安裝
2售碳、定義proto文件佩谣,以student.proto為例
3脑融、編譯student.proto
protoc student.proto --cpp_out=./
4虏劲、protoc會根據(jù)定義的proto文件生成相應(yīng)的API,對于student.id有
inline bool has_id() const;
inline void clear_id();
static const int kIdFieldNumber = 1;
inline google::protobuf::uint64 id() const;
inline void set_id(google::protobuf::uint64 value);
5演闭、除了字段的API不跟,protoc還會生成標(biāo)準(zhǔn)消息函數(shù)
bool IsInitialized() const; //檢查是否全部的required字段都被置(set)了值
void CopyFrom(const Person& from); //用外部消息的值,覆寫調(diào)用者消息內(nèi)部的值
void Clear(); //將所有項復(fù)位到空狀態(tài)
int ByteSize() const; //消息字節(jié)大小
string DebugString() const; //將消息內(nèi)容以可讀的方式輸出
string ShortDebugString() const; //輸出時會有較少的空白
bool SerializeToString(string* output) const; //將消息序列化并儲存在指定的string中
bool ParseFromString(const string& data); //從給定的string解析消息
bool SerializeToArray(void * data, int size) const //將消息序列化至數(shù)組
bool ParseFromArray(const void * data, int size) //從數(shù)組解析消息
bool SerializeToOstream(ostream* output) const; //將消息寫入到給定的C++ ostream中
bool ParseFromIstream(istream* input); //從給定的C++ istream解析消息