【protobuf】protobuf 开发 (二)

server/2024/9/24 11:21:30/

紧接着上一篇文章https://blog.csdn.net/qq_37387199/article/details/137890740

获取丢失的代码

拿到丢失的源代码需要去 Google 的 protobuf GitHub 仓库,地址在 https://github.com/protocolbuffers/protobuf

可以下载压缩包,也可以使用 Git 克隆。前者会丢失一部分第三方库,而这些是编译 protoc 文件所不可或缺的(当然如果你不编译就不需要这些)

我这里使用 Git 克隆,在本地目录下执行:

git clone https://github.com/protocolbuffers/protobuf.git

进入 protobuf 目录,我们需要下载未自动下载的第三方库:

git submodule update --init --recursive

编译 protoc 文件(可以跳过,也许)

上一篇文章,我们使用了 release 中现成的 protoc 生成 pb 的头文件和源文件,其实我们也可以直接通过源代码编译生成这个。

可以参考这篇文章https://blog.csdn.net/wzw1609119742/article/details/119712422,写得很不错。我是用 Clion 自动编译的。

构建指令:

"C:\Program Files\JetBrains\CLion 2024.1\bin\cmake\win\x64\bin\cmake.exe" -DCMAKE_BUILD_TYPE=Debug "-DCMAKE_MAKE_PROGRAM=C:/Program Files/JetBrains/CLion 2024.1/bin/ninja/win/x64/ninja.exe" -G Ninja -S D:\Codes\3rd\protobuf -B D:\Codes\3rd\protobuf\cmake-build-debug

编译指令:

"C:\Program Files\JetBrains\CLion 2024.1\bin\cmake\win\x64\bin\cmake.exe" --build D:\Codes\3rd\protobuf\cmake-build-debug --target all -j 10

测试pb文件

我编写的 test.cpp 如下:

int main()
{Person p;std::string name = "ti";p.set_allocated_name(&name);p.set_age(1);p.set_sex(1);std::string output;p.SerializeToString(&output);std::cout << output << std::endl;
}

文件需要放在 protobuf 工程 src 目录下,和生成的 pb 头文件和源文件放在一起,才能保证正常 include 。


http://www.ppmy.cn/server/32288.html

相关文章

这书不错,古琴乐理实用教程(尹溧新编),有课学得通透。

通篇阅读后&#xff0c;发现这本书以古琴初习者、未系统接触过现代乐理的读者为对象&#xff0c;将复杂的古琴音乐理论简单化、通俗化。书中采用参照比较的方法、通俗易懂的语言、言简意赅的文字&#xff0c;并结合具体音乐作品将古琴研习中最主要的、最核心的理论知识进行简明…

多态的原理

前言:以下的内容均是在VS2019的环境中&#xff0c;32位平台下的 目录 1.多态的实现条件 虚函数重写的两个例外 一个题加深理解 总结 重载 重写 重定义区别 2.多态的实现原理 单继承 多继承 动态多态和静态多态 多态的好问题 1.多态的实现条件 虚函数&#xff1a;被…

微博一级评论爬虫

cookies需要替换成自己的 import requests import requests from lxml import etree import openpyxl from concurrent.futures.thread import ThreadPoolExecutor import re from datetime import datetime, timedelta from urllib import parse from jsonpath import jsonpa…

Django框架之模板层

一、模版语法 1、模版初识 &#xff08;1&#xff09;语法 {{ }}: 变量相关 {% %}: 逻辑相关 &#xff08;2&#xff09;变量 ① 传值 在Django的模板语言中按此语法使用&#xff1a; {{ 变量名 }}。 当模版引擎遇到一个变量&#xff0c;它将计算这个变量&#xff0c;然…

对命令模式的理解

目录 一、场景1、文本编辑器并不是一个好的例子&#xff0c;设备控制器才是2、设备控制器的demo 二、不用命令模式1、代码2、问题 三、使用命令模式1、代码2、当需求变化时2.1 新增代码2.2 优点 四、进一步思考1、省略对Command的建模可以吗&#xff1f;2、命令模式的价值 一、…

2024五一数学建模B题思路代码与论文分析

2024五一数学建模B题完整代码和成品论文获取↓↓↓↓↓ https://www.yuque.com/u42168770/qv6z0d/gyoz9ou5upvkv6nx?singleDoc# B题 未来新城交通需求规划与可达率问题需要建立的模型和算法: 1. 图论 2. 网络流模型 3. 线性规划/整数规划 4. 组合优化 5. 随机过程 6. …

C#调用skiasharp操作并绘制图片

之前学习ViewFaceCore时采用Panel控件和GDI将图片及识别出的人脸方框和关键点绘制出来&#xff0c;本文将其修改为基于SKControl和SKCanvas实现相同的显示效果并支持保存为本地图片。   新建Winform项目&#xff0c;在Nuget包管理器中搜索并安装一下SkiaSharp和ViewFaceCore…

STM32 F103C8T6学习笔记17:类IIC通信(SMBus协议)—MLX90614红外非接触温度计

今日学习配置MLX90614红外非接触温度计 与 STM32 F103C8T6 单片机的通信 文章提供测试代码讲解、完整工程下载、测试效果图 本文需要用到的大概基础知识&#xff1a;1.3寸OLED配置通信显示、IIC通信、 定时器配置使用 这里就只贴出我的 OLED驱动方面的网址链接了&#xff1a…