該庫(kù)的介紹自行百度,項(xiàng)目中使用到的話,參考這篇文檔;PS:本人編寫(xiě)的時(shí)候,也是第一次編譯,請(qǐng)跟隨我的腳步依次進(jìn)行探索。期間可能會(huì)遇到多種多樣的問(wèn)題,我會(huì)分享我的解決方法和思路;
成都創(chuàng)新互聯(lián)公司云計(jì)算的互聯(lián)網(wǎng)服務(wù)提供商,擁有超過(guò)13年的服務(wù)器租用、成都天府聯(lián)通服務(wù)器托管、云服務(wù)器、網(wǎng)頁(yè)空間、網(wǎng)站系統(tǒng)開(kāi)發(fā)經(jīng)驗(yàn),已先后獲得國(guó)家工業(yè)和信息化部頒發(fā)的互聯(lián)網(wǎng)數(shù)據(jù)中心業(yè)務(wù)許可證。專業(yè)提供云主機(jī)、網(wǎng)頁(yè)空間、域名注冊(cè)、VPS主機(jī)、云服務(wù)器、香港云服務(wù)器、免備案服務(wù)器等。本文屬于入門(mén)文檔,進(jìn)階的使用,請(qǐng)參考其他網(wǎng)文。
提示:以下是本篇文章正文內(nèi)容,下面案例可供參考
Github地址:https://github.com/protocolbuffers/protobuf
本人下載版本: protobuf-3.21.8.tar.gz
二、環(huán)境準(zhǔn)備windows10+ vs2019
使用語(yǔ)言:C++
三、編譯目標(biāo)生成Windows下x64的庫(kù)
四、學(xué)習(xí)文檔mkdir solution & cd solution
cmake -G "Visual Studio 16 2019" ..
修改為:
cmake -G "Visual Studio 16 2019" .. -Dprotobuf_BUILD_TESTS=OFF
生成解決方案如下:
syntax = "proto3";
import "google/protobuf/timestamp.proto";
package test;
message BeaconDatas
{google.protobuf.Timestamp dataTime = 1; //數(shù)據(jù)時(shí)間
int32 ss = 2; //信標(biāo)基礎(chǔ)信息
}
需要注意三部分:
- protoc.exe為絕對(duì)磁盤(pán)路徑
- –cpp_out=D:\protocol 為指定輸出路徑
- test.proto為需要轉(zhuǎn)換的文件
- -I選項(xiàng)為指定搜索路徑,注意,這個(gè)選項(xiàng)可以使用多次,指定多個(gè)搜索路徑;我這里指定了當(dāng)前路徑,同時(shí)我用到了google.protobuf.Timestamp,所以我又指出了它的include文件夾;
#include#include "test.pb.h"
int main()
{test::BeaconDatas aaa;
aaa.set_ss(123);
std::cout<< "ss="<< aaa.ss()<< std::endl;
std::cout<< "Hello World!\n";
getchar();
}
- required關(guān)鍵字:該規(guī)則規(guī)定,消息體中該字段的值是必須要設(shè)置的。
- optional關(guān)鍵字:消息體中該規(guī)則的字段的值可以存在,也可以為空,optional的字段可以根據(jù)defalut設(shè)置默認(rèn)值。
- repeated關(guān)鍵字:消息體中該規(guī)則字段可以存在多個(gè)(包括0個(gè))。
例如proto文件中,“package test;”,轉(zhuǎn)換以后會(huì)生成命名空間test;
如果是“package test.newtest”等有點(diǎn)的情況,轉(zhuǎn)換以后會(huì)生成命名空間test::newtest;
SerializeToString、ParseFromString等函數(shù);
你是否還在尋找穩(wěn)定的海外服務(wù)器提供商?創(chuàng)新互聯(lián)www.cdcxhl.cn海外機(jī)房具備T級(jí)流量清洗系統(tǒng)配攻擊溯源,準(zhǔn)確流量調(diào)度確保服務(wù)器高可用性,企業(yè)級(jí)服務(wù)器適合批量采購(gòu),新人活動(dòng)首月15元起,快前往官網(wǎng)查看詳情吧