【protobuf】protobuf 开发 (二)

news/2024/9/25 6:03:07/

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

相关文章

prometheus+grafana的安装与部署及优点

一、Prometheus 的优点 1、非常少的外部依赖&#xff0c;安装使用超简单&#xff1b; 2、已经有非常多的系统集成 例如&#xff1a;docker HAProxy Nginx JMX等等&#xff1b; 3、服务自动化发现&#xff1b; 4、直接集成到代码&#xff1b; 5、设计思想是按照分布式、微服…

XORM 框架的使用

1、xorm 1.1、xorm 简介 xorm 是一个简单而强大的Go语言ORM库. 通过它可以使数据库操作非常简便。 特性 支持 struct 和数据库表之间的灵活映射&#xff0c;并支持自动同步事务支持同时支持原始SQL语句和ORM操作的混合执行使用连写来简化调用支持使用ID, In, Where, Limit,…

上位机图像处理和嵌入式模块部署(树莓派4b下ros安装方法)

【 声明&#xff1a;版权所有&#xff0c;欢迎转载&#xff0c;请勿用于商业用途。 联系信箱&#xff1a;feixiaoxing 163.com】 随着嵌入式开发板算力越来越强&#xff0c;很多的同学开始用树莓派做一些ros开发的工作。目前来说&#xff0c;ros有两个版本&#xff0c;分别是ro…

记录一个练手的js逆向password

很明显 请求加密了password 全局搜索 有个加密函数(搜不到的可以搜临近的其他的关键字 或者url参数) 搜索的时候一定要仔细分析 我就没有仔细分析 我搞了好久 又是xhr又是hook的(还没hook到) 我当时也是疏忽了 我寻思这个也不是js文件 直到后来 我怎么也找不到 我就猜想 不…

Django之单文件上传(以图片为例)

一&#xff0c;创建项目 初始化&#xff0c;数据迁移&#xff0c;创建superuser&#xff0c;创建app等 二&#xff0c;配置settings.py 1&#xff0c;配置数据库&#xff08;本作者使用的mysql&#xff09;&#xff0c;以前文章有提到 2&#xff0c;配置静态文件存放路径 STAT…

LibTorch入坑记--续2

一、安装faiss 我的faiss&#xff0c;用的是曾经安装过的 pip install faiss-gpu1.7 当时搞得环境名称是pni 二、配置环境 三、例子代码 #include <faiss/IndexFlat.h> #include <faiss/Index.h> #include <faiss/VectorTransform.h> #include <faiss/…

初期Linux

一&#xff0c;系统分为 1.1window系统 个人 &#xff1a;win7&#xff0c;win8&#xff0c;Win10&#xff0c;Win11服务器版&#xff1a;window server 2003&#xff0c;window server 2008 1.2Linux系统 centos7redhatubantukali 1.3什么是Linux&#xff1f; Linux是基…

本地运行AI大模型简单示例

一、引言 大模型LLM英文全称是Large Language Model&#xff0c;是指包含超大规模参数&#xff08;通常在十亿个以上&#xff09;的神经网络模型。2022年11月底&#xff0c;人工智能对话聊天机器人ChatGPT一经推出&#xff0c;人们利用ChatGPT这样的大模型帮助解决很多事情&am…