在學習網絡編程時,師兄給我提了個要求,讓我用protobuf把字符串和圖片打包發送,初次接觸protobuf走了不少彎路,如今終於可以簡單的使用,記錄一下過程,但願能給遇到一樣問題的同窗一點幫助。
關於protobuf我就很少介紹了(我瞭解的也是皮毛,還在繼續學習,哈哈哈哈哈~),使用環境:win10+VS2013,protobuf版本:2.6.1,文件已經上傳到百度雲,
連接:https://pan.baidu.com/s/1tAy2EN1kIkZFd4rlPFWqQQ
提取碼:kwmcios
下載解壓後能夠看到以下文件目錄:編程
打開vsprojects文件夾,能夠看到protobuf.sin,用VS打開。
在VS打開後有以下目錄,這裏咱們只須要生成libprotobuf,libprotoc便可。
在作完這些以後,在Debug目錄下就有了咱們想要的protoc.exe,以及一些 .lib文件。如今咱們就能夠來嘗試使用protobuf了,下面是使用步驟:網絡
1.定義本身的proto
打開…\protobuf-2.6.1\examples,能夠看到一些已有的例子,在此路徑下建立 protobuf-test.proto,內容以下:學習
package tutorial; message Test { required string testName = 1; required int32 testAge = 2; optional string testEmail = 3; }
2.而後用cmd運行protoc.exe生成咱們的目標語言格式 C++
命令以下:protoc -I=E:\protobuf-2.6.1\examples --cpp_out=E:\protobuf-2.6.1\examples E:\protobuf-2.6.1\examples\protobuf-test.proto
在…\examples 路徑下就生成了以下文件:
3.使用
用vs2013(其餘版本也行)建立一個空項目,選擇工程屬性並配置:
ui
點擊 配置屬性 下的 C/C++ 的 常規,右邊附加包含目錄,導入這個路徑E:\protobuf-2.6.1\src(根據本身文件存放路徑來決定)
點擊連接器 的常規,右邊的附加庫目錄,導入這個路徑E:\protobuf-2.6.1\vsprojects\Debug
spa
把以前生成的protobuf-test.pb.h和protobuf-test.pb.cc,複製到項目中:
寫入以下代碼:3d
#include <iostream> #include "protobuf-test.pb.h" #pragma comment(lib, "libprotobuf.lib") #pragma comment(lib, "libprotoc.lib") using namespace std; using namespace tutorial; int main() { Test mas1; mas1.set_testname("CSDN"); mas1.set_testage(10); cout << mas1.testname() << endl; cout << mas1.testage() << endl; system("pause"); return 0; }
運行,報以下錯誤:
解決方法以下:
右鍵點擊工程 -> 屬性 -> C/C++ -> 常規 -> SDL檢查
改成:否 (/sdl-)
或者:
右鍵點擊工程 -> 屬性 -> C/C++ ->預處理器
添加宏定義 _SCL_SECURE_NO_WARNINGScode
編譯成功,結果以下:
blog
protobuf的更多使用等我用熟後再更新~圖片