protobuf基本操作1

2021-07-10 08:14:26 字數 2288 閱讀 9888

最近領導分配了乙個任務,這個工程挺高階的,主要以前從沒有搞過,其中裡面有protobuf,以前從來沒有聽說過這個東西,最近在網上看了一些高人的帖子,才知道protobuf是什麼云云了,我的理解是,例如我們要用c++寫個什麼工程,c++是物件導向的,我們要寫很多類,估計都得寫上上百行,上千行的**,但是現在用這個protobuf,就可以省很多是,我們只需要寫訊息包,然後編譯,protobuf就會根據這個訊息包自動生成兩個檔案.cc和.h,.h這兩個檔案中就有很多類,供我們呼叫。

在ubuntu的終端裡輸入:$wget   

進入到解壓後的目錄: $cd protobuf-2.5.0

進行執行 :   $ ./configure

在執行./configure這個命令之前最好把vim ,g++,make安裝好,不然在執行./configure的時候可能會出現錯誤,上面三個安裝的命令:$sudo apt-get install vim  $sudo apt-getinstall g++     $sudo apt-get install make

./configure成功之後,接下來是如下幾步:

$make

$make check

$make install     //在執行這一步的時候,我出現了錯誤,錯誤的意思是執行的許可權不夠,如果是這樣的話,$make install  這條命名就換成$sudomake install

下面我們要修改一下配置檔案:$vim  ~/.profile

在開啟的檔案中,在檔案末尾新增如下**:

exportld_library_path=$ld_library_path:/usr/local/lib

然後儲存退出,接下來執行:    $source  ~/.profile

使剛才修改的配置檔案生效,接下來執行: $protoc --version

如果上面的步驟一切順利的話,那麼就會在終端顯示protobuf的版本號,如下

下面我們來測試一下,在測試之前我們最好先建立乙個資料夾,例如上面的proto,接下的操作都在這個資料夾下進行。

我們先用vim建立並編輯.proto檔案,例如: $  vim msg.proto

內容如下:

然後執行下面的命令: $protoc -i=.  --cpp_out=. msg.proto

執行這條命名之後,在當前目錄下就會生成如下的兩個檔案: msg.pb.cc msg.pb.h

這兩個檔案就是根據上面的那個msg.proto檔案生成了,裡面有類的宣告和類的實現,我們可以進入這兩個檔案。研究一下,這裡就不在說明了。然後我們就可以呼叫類和裡面的函式實現自己的功能了,下面是兩個簡單的測試檔案:

我們先建立: $  vim write.cc

內容如下:

然後編譯write.cc,命名如下:

$ g++ msg.pb.cc write.cc -o write  `pkg-config --cflags --libs protobuf`-lpthread

執行生成的write檔案,命令為:

$ ./write

可看到生成的msg.pb檔案,這個檔案是由fstreamoutput(「./msg.pb」,ios::out|ios::trunc|ios::binary)函式生成的

下面在建立乙個檔案:$ vim reader.cc

內容如下:

編譯reader.cc檔案:命令為:

$ g++ msg.pb.cc reader.cc -o reader  `pkg-config --cflags --libs protobuf`-lpthread

然後執行生成的reader檔案。命令如下:

./reader

在終端就會列印出:

101hello

上面在生成可執行檔案的過程,都是我們一條一條命令的輸入,我們可以寫makefile,然後執行一條make命令,就可以自動生成可執行檔案,

編寫makefile檔案: $ vimmakefile

內容如下:

編寫完之後,執行:$make

就會自動生成可執行檔案write和reader

protobuf 基本使用

linux apt install y protobuf compiler mac brew install protobuf 原始碼安裝 wget unzip protobuf all 3.5.1.zip cd protobuf 3.5.1 configure make make install ...

protobuf巢狀類操作例項

protobuf類進行巢狀時,協議描述如下 客戶端拉取訊息請求包 message secret get req 訊息請求包封裝 message secret msg req 1 進行打包時的操作如下 secret get req stgetreq stgetreq.set version 1 sec...

vim基本操作 1

第一課 1.移動游標 h 左移 j 下移 k 上移 l 右移 2.退出vim q 不儲存,強制退出 先按esc確保處於正常模式 wq 儲存後退出 3.刪除字元 x 刪除游標所在字元 4.插入文字 i 在正常模式下,按i鍵,在游標前插入字元 a 在正常模式下,按a在游標後插入字元 第二課 1.刪除類指...