| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 开发工具 -> protobuf编译、安装和简单使用C++(Windows+VS平台) -> 正文阅读 |
|
[开发工具]protobuf编译、安装和简单使用C++(Windows+VS平台) |
protobuf编译、安装和简单使用C++(Windows+VS平台) 下载如下cpp版本 解压后得到一个目录,等下CMake会用到 如果你电脑没有CMake,需要去官网下载 双击打开下载解压后的CMake目录/bin/cmake-gui.exe 现在,选择刚才解压的目录,和构建输出目录 然后选择Configure 选择你的VS版本,然后finish即可 点击Generate,成功后,进入生成后的目录 使用VS打开这个项目 编译libprotobuf,protoc,libprotoc这三个 编译就结束了,接下来开始使用protobuf VS中使用protobuf syntax = “proto3”; message User { 打开Account.pb.h头文件,发现package就是命名空间,Account是类,大概如下代码 namespace IM { 接下来的步骤比较关键 先将平台设置为所有平台 右键打开项目的属性,修改一下属性 关闭安全警告_SCL_SECURE_NO_WARNINGS 添加之前编译好的库 添加之前拷贝到项目中的库如果有多个.lib,需要用分号隔开 还要将protobuf源码中src/google文件夹拷贝到项目目录下 然后设置包含你的项目目录 然后,开始写代码了 #include using namespace std; int main(int argc, char** argv)
} protobuf的一些方法 bool IsInitialized() const; //检查是否全部的required字段都被置(set)了值。 void CopyFrom(const Person& from); //用外部消息的值,覆写调用者消息内部的值。 void Clear(); //将所有项复位到空状态(empty state)。 int ByteSize() const; //消息字节大小 string DebugString() const; //将消息内容以可读的方式输出 string ShortDebugString() const; //功能类似于,DebugString(),输出时会有较少的空白 string Utf8DebugString() const; //Like DebugString(), but do not escape UTF-8 byte sequences. void PrintDebugString() const; //Convenience function useful in GDB. Prints DebugString() to stdout. 最后,每一个protocol buffer类都有读写你所选择的消息类型的函数。它们包括: 注意: protocol buffers和面向对象的设计 protocol buffer类通常只是纯粹的数据存储器(就像C++中的结构体一样);它们在对象模型中并不是一等公民。如果你想向生成的类中添加更丰富的行为,最好的方法就是在应用程序中对它进行封装。如果你无权控制.proto文件的设计的话,封装protocol buffers也是一个好主意(例如,你从另一个项目中重用一个.proto文件)。在那种情况下,你可以用封装类来设计接口,以更好地适应你的应用程序的特定环境:隐藏一些数据和方法,暴露一些便于使用的函数,等等。但是你绝对不要通过继承生成的类来添加行为。这样做的话,会破坏其内部机制,并且不是一个好的面向对象的实践。 bool ParseFromString(const string& data); //从给定的string解析消息。 bool SerializeToArray(void * data, int size) const //将消息序列化至数组 bool ParseFromArray(const void * data, int size) //从数组解析消息 bool SerializeToOstream(ostream* output) const; //将消息写入到给定的C++ ostream中。 bool ParseFromIstream(istream* input); //从给定的C++ istream解析消息。 注意: protocol buffers和面向对象的设计 protocol buffer类通常只是纯粹的数据存储器(就像C++中的结构体一样);它们在对象模型中并不是一等公民。如果你想向生成的类中添加更丰富的行为,最好的方法就是在应用程序中对它进行封装。如果你无权控制.proto文件的设计的话,封装protocol buffers也是一个好主意(例如,你从另一个项目中重用一个.proto文件)。在那种情况下,你可以用封装类来设计接口,以更好地适应你的应用程序的特定环境:隐藏一些数据和方法,暴露一些便于使用的函数,等等。但是你绝对不要通过继承生成的类来添加行为。这样做的话,会破坏其内部机制,并且不是一个好的面向对象的实践。 参考文章:https://cloud.tencent.com/developer/article/1602549 |
|
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/13 15:18:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |