在學習網絡編程時,師兄給我提了個要求,讓我用protobuf把字符串和圖片打包發送,初次接觸protobuf走了很多彎路,現在終於能夠簡單的使用,記錄一下過程,希望能給遇到同樣問題的同學一點幫助。
關於protobuf我就不多介紹了(我了解的也是皮毛,還在繼續學習,哈哈哈哈哈~),使用環境:win10+VS2013,protobuf版本:2.6.1,文件已經上傳到百度雲,
鏈接:https://pan.baidu.com/s/1tAy2EN1kIkZFd4rlPFWqQQ
提取碼:kwmc
下載解壓后可以看到如下文件目錄:
打開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(其他版本也行)創建一個空項目,選擇工程屬性並配置:
點擊 配置屬性 下的 C/C++ 的 常規,右邊附加包含目錄,導入這個路徑E:\protobuf-2.6.1\src(根據自己文件存放路徑來決定)
點擊鏈接器 的常規,右邊的附加庫目錄,導入這個路徑E:\protobuf-2.6.1\vsprojects\Debug
把之前生成的protobuf-test.pb.h和protobuf-test.pb.cc,復制到項目中:
寫入如下代碼:
#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_WARNINGS
編譯成功,結果如下:
protobuf的更多使用等我用熟后再更新~