【protobuf】protobuf 开发 (二)

ops/2024/11/14 6:27:21/

紧接着上一篇文章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/ops/34073.html

相关文章

Mac基于Docker-ubuntu构建c/c++编译环境

编译环境安装和使用被充分验证&#xff0c;如有期望补充的内容欢迎留言评论。 目录 前言 Docker desktop下载安装 修改镜像源 选择ubuntu镜像 docker容器启动 参数说明: 宿主机与docker容器文件共享 宿主机与docker容器拷贝文件 为 Ubuntu 配置 ssh、vim、make 相关工…

Qt 绘图(学习记录)

1. QT 绘图中创建画家类 QPainter提供了高度优化的功能&#xff0c;以完成大多数绘图GUI程序所需的功能。它可以画任何东西&#xff0c;从简单的线条到复杂的形状&#xff0c;如馅饼和和弦。它还可以绘制对齐的文本和像素图。通常&#xff0c;它绘制一个“自然”坐标系&#…

【Micropython Pitaya Lite教程】烧录固件

文章目录 前言一、编译固件源码二、烧录固件总结 前言 MicroPython是一种精简的Python 3解释器&#xff0c;可以在微控制器和嵌入式系统上运行。Pitaya Lite是一款基于ESP32的微控制器开发板&#xff0c;它结合了低功耗、Wi-Fi和蓝牙功能。结合MicroPython和Pitaya Lite&#…

【Python项目】基于opencv的的【疲劳检测系统】

技术简介&#xff1a;使用Python技术、OpenCV图像处理库、MYSQL数据库等实现。 系统简介&#xff1a;用户可以通过登录系统平台实现实时的人脸照片的拍摄和上传&#xff0c;结合上传图像的内容进行后台的图像预处理和运算分析&#xff0c;用户可以通过照片分析界面查看到当前检…

WPF中DispatchHelper

在WPF应用中&#xff0c;Dispatcher 是一个非常重要的概念&#xff0c;它帮助我们在正确的线程&#xff08;通常是UI线程&#xff09;上执行代码&#xff0c;这对于需要访问或更新UI元素的任务至关重要。由于WPF应用中的UI只能从UI线程进行访问&#xff0c;因此当你在后台线程上…

Pytorch 实现 GAN 对抗网络

GAN 对抗网络 GAN&#xff08;Generative Adversarial Network&#xff09;对抗网络指的是神经网络中包括两个子网络&#xff0c;一个用于生成信息&#xff0c;一个用于验证信息。下面的例子是生成图片的对抗网络&#xff0c;一个网络用于生成图片&#xff0c;另一个网络用于验…

9.4.k8s的控制器资源(job控制器,cronjob控制器)

目录 一、job控制器 二、cronjob控制器 一、job控制器 job控制器就是一次性任务的pod控制器&#xff0c;pod完成作业后不会重启&#xff0c;其重启策略是&#xff1a;Never&#xff1b; 简单案例 启动一个pod&#xff0c;执行完成一个事件&#xff0c;然后pod关闭&#xff1b;…

Python爬取豆瓣电影Top250数据

任务 爬取豆瓣电影top250中的影片名称、影片海报、年份、地区、类型、评分、评价人数、总体评价&#xff0c;并输出到douban_top250.xlsx文件中 环境 Python 3.8 requests bs4 openpyxl 源码 # 创建一个新的Excel工作簿 workbook openpyxl.Workbook() # 获取默认的工作表…