Protocol Buffers 學習筆記

2021-08-28 02:00:56 字數 1835 閱讀 6163

1、安裝

ubuntu下的安裝很簡單(雖然要安裝幾個包):

具體參見:[url]

$ sudo apt-get install autoconf automake libtool curl make g++ unzip

$ ./autogen.sh

$ ./configure

$ make

$ make check

$ sudo make install

$ sudo ldconfig # refresh shared library cache.

[color=red]只編譯靜態庫:[/color]

./configure --disable-shared

2、編譯

.proto檔案編譯:

protoc addressbook.proto --cpp_out .  # 用於生成c++標頭檔案和.cc檔案

protoc addressbook.proto --python_out . #用於生成python相應的檔案

注意: 可以通過 -i 引數更改搜尋路徑, 所有檔案的路徑必須為絕對路徑,,

比如官方給的例子(除了上面那種所有檔案都在當前資料夾的情況):

protoc -i=$src_dir --python_out=$dst_dir $src_dir/addressbook.proto

c++檔案編譯:

下面命令中的pkg-config --cflags --libs protobuf會生成proto buff所需的編譯選項(頭檔案目錄,-pthread等)

c++ my_program.cc my_proto.pb.cc `pkg-config --cflags --libs protobuf`

3、教程

python版:[url]

可以print(proto)來看proto例項的內容

c++版:[url]

每個proto類都有乙個debugstring()方法,用於返回供人看的內容

完成編譯命令:

#只能用g++ 用gcc不行!

echo compile c++ part

protoc addressbook.proto --cpp_out .

g++ writeaddress.cc addressbook.pb.cc -o write.out `pkg-config --cflags --libs protobuf`

g++ readaddress.cc addressbook.pb.cc -o read.out `pkg-config --cflags --libs protobuf`

echo use ./write.out add.txt to generate address file

echo use ./read.out add.txt to read address file

echo compile python part

protoc addressbook.proto --python_out .

echo use python writeaddress.py add.txt to generate address file

echo use python readaddress.py add.txt to read address file

官方教程中有一些錯誤,,完整的**(包含編譯用的shell命令)見附件

Protocol Buffers 編譯工具安裝

作業系統 osx 語言環境 golang 解壓後 將bin下面的protoc檔案拷貝到 gopath下,gopath已經在path下,保證protoc在path下即可 我放在這裡,which protoc users macbook go bin protoc 然後,將include複製到 gopa...

Protocol Buffers使用注意事項

protocol buffers做為廣泛使用的乙個序列化開源庫,提供了很多語言下的支援,本文就談談msvc c 使用pb遇到的問題,當然這些問題因為每個人的使用模式不同,可能都不一樣,本文也不討論怎麼寫proto及編譯。我們使用pb做序列化可以把pb生成靜態庫或者動態庫 libprotobuf.dl...

Protocol Buffers 在iOS的使用

protocol buffers 簡單的說是對結構化的資料進行序列化 json格式 xml格式 的一種語言,但是更小 更快 更簡單,更多的用於im即時通訊這一塊,有助於節省流量,提高效能。protocol buffers 是谷歌的,官網連線 現在我們來簡單的體驗下 protocol buffers ...