目錄:
配置環境Windows10 ,IDE是VS2017企業版
下載protocol buffer鏈接
github下載:源碼獲取
github下載:壓縮包獲取
cpp3.8.0版本:提取碼:09v5
前提條件
安裝cmake:教程連接,不保證正確
使用cmake創建sln文件
打開cmake,路徑cmake->bin
1.是cmake文件位置,在protobuf目錄下找,根據圖片上的路徑查找就行C++及之前的路徑是我的路徑,不用管
2.在1cmake文件夾下的build,你生成的sln工程會放在裏面,當然你可以自己嘗試着改變它的位置。
3.點擊2次,不報錯就沒關係,報錯了自行查找,畢竟我長得帥(嘿嘿嘿)
4.完成3後點擊1次,會在build目錄下生成很多文件,打開其中的protobuf.sln文件
生成lib
打開protobuf.sln文件後操作
右鍵點擊生成,兩個文件都需要生成,生成以後打開
如果你是release生成的,那麼這裏會出現release文件夾,選中其中的這兩個文件
我全部生成了所以文件比較多,你生成我指出的那兩個文件,就只會出現現在指出的文件
將這兩個文件複製到你的vs工程下(可以直接在包含外部鏈接庫時選擇,不過我裝protobuf錯太多了,就用的這個方法),工程是自己建的
新建一個文件夾(名字自取),將上面兩個文件copy到裏面
編寫一個.proto 文件
syntax = "proto2";
option optimize_for= LITE_RUNTIME;
package dong;
message PersonInfo {
required string name = 1;
required uint32 age = 2;
required uint32 phone_num = 3;
}
第二行意義是什麼自行百度(我也不太明白)
生成.h文件和.cc文件
在你的.proto目錄打開cmd
// $SRC_DIR 表示.proto文件所在目錄;
// cpp_out 表示當前用於C++語言;
// $DST_DIR 表示編譯生成文件的路徑;
//filename = test.proto(你的文件名)
protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/filename
我輸入的指令:
protoc -I=./ --cpp_out=../src ./test.proto
- -I 代表當前路徑
- ./ 代表當前文件夾
- –cpp_out代表輸出文件位c++,可替換爲–java_out,–python_out
- . ./src代表上一級目錄的src文件夾,兩個 . 之間沒有空格
- ./test.proto是你上一步編寫的文件
輸入指令按下回車後會在你的指定輸出位置生成一個.cc文件和一個.h文件
將這兩個文件copy到vs工程下
鏈接lib(完全沒理解,不過不影響配置,嘿嘿)
右鍵屬性進入下一個界面
選擇下載的protobuf裏的src,可以根據圖片中路徑來選擇,C++及之前的路徑是我的路徑,不用管
聽說這個可以不用管,只需要配置爲相同的即可,不過我的是報錯,改過以後代碼成功運行
選擇文件看lib,sln生成的lib
添加libprotobufd.lib
點擊確定即可
測試與結果
測試代碼:
#include<iostream>
#include<fstream>
#include "test.pb.h"
using namespace std;
int main() {
dong::PersonInfo Person1;
cout << &Person1 << endl;
Person1.set_name("yalisd");
Person1.set_age(5);
fstream out("../bin", ios::out | ios::trunc | ios::binary);
cout << Person1.age() << endl;
cout << Person1.name() << endl;
system("pause");
}
測試結果: