windows下Google Protocol Buffer 編譯安裝使用教程
轉載修改自:http://kuaile.in/archives/1214
protobuf的全稱是Protocol Buffer,它是google 的一種資料交換的格式,可用於用於分散式應用之間的資料通訊或者異構環境下的資料交換,
最近因為專案的需求,需要接觸Protobuf,在官方提供的壓縮包中,提供了Linux下的編譯指令碼,但是,由於專案在windows下開發,因此,需要在Windows編譯和安裝Protobuf,結合自己的探索,希望能夠幫助到初次接觸到protobuf的朋友
第一、.lib檔案的生成,.h和.cc檔案的生成。
1.下載Google Protocol Buffer原始碼包
下載可以到protobuf官網下載:http://code.google.com/p/protobuf/downloads/list,一般下載第一個或是第二個,因為第一,二個是原始碼包,第三個是可執行檔案
2.解壓壓縮包
解壓壓縮包後,會得到類似於下面的檔案列表:
3.編譯vs工程
- 在解壓後的資料夾中,開啟vsprojects目錄,目錄中的檔案如圖所示:
開啟libprotobuf.vcproj(這個是vs的工程檔案,開啟前請確認安裝了vs2005 或vs2008,vs2010等等),在開啟工程中, 可能需要轉換工程,直接轉換就行了
開啟後,vs的工程頁面如圖所示:
右鍵分別生成libprotobuf,libprotobuf-lite,libprotoc,protoc這四個工程(編譯模式為Release 模式):
4.編譯完成
編譯完成後,可以在vsprojects\Release下發現3個lib和一個exe檔案,他們分別是libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe :
5.拷貝檔案到windows目錄下:
將得到的libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe拷貝到系統盤的windows目錄下。如果你的系統安裝在C盤,那麼就拷貝到c:\windows
6.編譯proto檔案,生成c++檔案
假設在E:\test目錄下有一個名為addressbook.proto的proto檔案,那麼開啟CMD,輸入下面的命令就可以生成C++原始碼了:
?1 |
protoc.exe -I=e:\
test
--cpp_out=e:\
test
e:\
test
\addressbook.proto
|
生成了addressbook.pb.h和addressbook.pb.cc檔案,將這個檔案拷貝到需要用到的工程裡就可以直接用了:
至此,protobuf的編譯和使用教程就這麼多了,如果有錯誤的地方,還請多多指出
注:下載的檔案如果沒有vs工程,需要安裝CMake (cmake-gui)生成vs工程目錄,生成後編譯專案會生成libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe四個檔案,第5步可以不把這四個檔案放到系統目錄下,而在第6步cmd視窗編譯.proto檔案時加上這protoc.exe的路徑。經試驗成功生成了.h和.cc檔案
第二、.h和.cc檔案的使用。
1.proto檔案舉例為helloworld.proto:
syntax = "proto3";
package lm;
message helloworld
{
int32 id = 1; // ID
string str = 2; // str
int32 opt = 3; //optional field
}
生成的.h和.cc檔案為helloworld.h和helloworld.cpp。
2.建立工程,並將生成的.h和.cc檔案引入至工程:
#include "helloworld.pb.h"
#include <iostream>
#include <fstream>
using namespace std;
//…
int main(void)
{
lm::helloworld msg1;
msg1.set_id(101);
msg1.set_str("hello");
// Write the new address book back to disk.
fstream output("./log", ios::out | ios::trunc | ios::binary);
if (!msg1.SerializeToOstream(&output)) {
cerr << "Failed to write msg." << endl;
return -1;
}
return 0;
}
3.附加包含目錄、附加庫目錄、附加依賴項:
附加包含目錄,引入下載的“protobuf-3.5.1\src”目錄:
附加依賴項,加入libprotoc.lib、libprotobuf.lib:
vs2008開發工具下,這樣配置後仍然報錯:
手足無措的時候,網上查解決辦法,說哪個版本的vs生成的libprotoc.lib、libprotobuf.lib,就要用哪個版本的vs使用這個.lib,於是改用vs2017,發現仍然報錯:
查解決辦法,改執行庫後正常:
編譯執行成功,在工程目錄下生成了“log”檔案。大功告成。