Protocol Buffer学习教程之编译器与类文件(三)

Protocol Buffer在Go中的使用简介 为什么使用protocol buffers 下面的例子使用比较简单的“地址登记”应用,可以从文件中读取用户的联系信息。每个用户在地址簿中有名字、ID和邮件地址以及联系电话。 如何序列化以及检索这样的结构化数据,有几种方法可以解决这种问题: 使用gobs序列化Go数据结构。在Go特定环境下,这是一个好的解决方案。但是如果你需要与其他平台编写的应用共享数据,它将无法正常工作。 你可以发明一种特殊的方... 阅读详情

Protocol Buffer学习教程之编译器与类文件(三)

 

 

 

1. 概述

在前面两篇中,介绍了Protobuf的基本概念、应用场景、与protobuf的语法等。在此篇中将介绍如何自己编译protobuf的库,不同Visual Studio之间的protobuf库一般不能通用,会有兼容性问题,下面我们将讲解,如何获取对应Visual Studio版本的protobuf库与编译器。

 

 

2. 环境准备

编译protobuf需要工具CMake(下载链接)与Visual Studio 2012版本或者更高版本(下载链接)。下载CMake的Windows版本,安装后在命令行中输入CMake命令,如果提示相关用法,说明安装CMake成功,如下:

 

关于Visual Studio的安装在此不作讲解。

Protobuf源码的下载,参见《Protocol Buffer学习教程之开篇概述(一)》。

 

3. 编译源码

 

 

打开Protobuf源码下的Cmake\Readme.md文件,此文件将详细介绍编译库文件的步骤。

以VS2015为例,在开始菜单中找到VS2015 x64 Native Tools Command Prompt工具,打开工具,如图:

 

然后进入到protobuf文件的cmake目录,然后创建build目录,并进入build目录:

C:\Path\to\protobuf\cmake>mkdir build & cd build

C:\Path\to\protobuf\cmake\build>

 

配置release版本:再在build目录创建release目录,并进入到release目录,关执行cmake命令:

C:\Path\to\protobuf\cmake\build>mkdir release & cd release

C:\Path\to\protobuf\cmake\build\release>cmake -G "NMake Makefiles" ^

     -DCMAKE_BUILD_TYPE=Release ^

     -DCMAKE_INSTALL_PREFIX=../../../../install ^

     ../..

 

配置debug版本:回到build目录,再在build目录创建debug目录,并进入到debug目录,关执行cmake命令:

C:\Path\to\protobuf\cmake\build>mkdir debug & cd debug

C:\Path\to\protobuf\cmake\build\debug>cmake -G "NMake Makefiles" ^

     -DCMAKE_BUILD_TYPE=Debug ^

     -DCMAKE_INSTALL_PREFIX=../../../../install ^

     ../..

 

生成Visual Studio工程文件:回到上一级目录,创建solution目录,然后进入到此目录,此步骤很关键,通过此命令来生成不同版本的工程,在命令窗口输入cmake --help命令,来查看相关的参数,支持生成的VS工程版本。执行以下文件:

C:\Path\to\protobuf\cmake\build>mkdir solution & cd solution

C:\Path\to\protobuf\cmake\build\solution>cmake -G "Visual Studio 12 2013 Win64" ^

     -DCMAKE_INSTALL_PREFIX=../../../../install ^

     ../.. -Dprotobuf_BUILD_TESTS=OFF

生成32位的话,把命令中的Win64去掉,要生成不同版本的VS工程的话,修改“Visual Studio 12 2013”。

 

最后编译库:release版本,执行命令:

C:\Path\to\protobuf\cmake\build\release>nmake

Debug版本,执行命令:

C:\Path\to\protobuf\cmake\build\debug>nmake

或者直接用VS打开solution目录下的工程编译即可。

4.测试生成的编译器

生成自己的类

如果想把你的proto文件生成Java,Python或者C++代码,你需要通过protoc编译器来编译proto文件,如果没有安装proto编译器,可以从下载download the package下载后,根据README文件的步骤处理即可。

编译器使用方法如下,发命令窗口输入如下格式命令:

protoc --proto_path=IMPORT_PATH --cpp_out=DST_DIR --java_out=DST_DIR --python_out=DST_DIR path/to/file.proto

protoc为编译器。以cmd窗口输入完整路径,或者直接把proto执行文件拖拽进入cmd窗口即可。

IMPORT_PATH为被包含文件的查找路径,如被编译的proto文件有import指令时,需要查找被包含的文件,就是通过此参数指定的路径来查找。如果有多个目录,可以通过--proto_path多次指定,编译器将按顺序查找。-I=IMPORT_PAT

H为—proto_path的简写。

你可以提供一个或者多个文件输出路径

--cpp_out指在DST_DIR目录下生成C++代码,更多内容参见C++ generated code reference

--java_out指在DST_DIR目录下生成java代码,更多内容参见Java generated code reference

--python_out指在DST_DIR目录下生成python代码,更多内容参见Python generated code reference

作为额外的约定,DST_DIR如果以.zip或者.jar结尾的话,编译器将输入一个.zip格式文件,.jar的话将输出一个java jar声明必须的manifest文件。如果归档文件已经存在的话,将被覆盖。

一次可以指定多个.proto文件作为输入文件,但是必须每个文件用IMPORT_

PATH格式引入,尽管所有文件都在同一目录下也一

Protocol Buffer Basics: C++ 简单的Protocol Buffer C++例子 This tutorial provides a basic C++ programmer’s introduction to working with protocol buffers. By walking through creating a simple example application, it shows you how to Define message formats in ... 阅读详情

相关推荐

protocol buffer编译器

主要用于对protocol buffer文件,及.proto文件的编译。谢谢你的关心

Protocol buffers基础

一、基础知识 1.1 1.2 protocol buffer编译器 二、安装步骤 2.1 pb compiler安装步骤 下载pb:https://developers.google.com/protocol-buffers/docs/downloads 下载后的文件中install.txt中说明步骤进行安装: 1. `cd' to the directory containing the package's source code and type `./configure' to conf

BC工坊 1178

王道考研计算机网络课件全解析:从零搭建你的知识框架(附B站视频+PPT下载)

本文全面解析王道考研计算机网络课程的核心知识体系,从OSI七层模型到TCP/IP四层架构,详细讲解物理层、数据链路层、网络层、传输层和应用层的关键技术。提供高效学习路径、实战案例和常见误区警示,帮助考生系统构建计算机网络知识框架,适合计算机考研备考者参考学习。

leaf8的博客 560

详解 protoc: Protocol Buffers 编译器

protoc是一个强大的工具,可以将 Protobuf 定义的结构编译为多种语言的代码,方便开发者在不同平台和语言中使用统一的数据格式。通过本文的介绍,你应该已经掌握了protoc的基本使用方法,包括安装、编写.proto文件、编译和在代码中的应用。希望这篇博客能帮助你更好地理解和使用protoc!如果你有任何问题或建议,欢迎留言讨论。

m0_54187478的博客 4592

DSPF28335:从零到一,实战GPIO与外部中断的嵌入式系统交互设计

本文以德州仪器DSPF28335芯片为例,详细讲解了嵌入式系统中GPIO与外部中断(EXTI)的实战配置方法。通过一个完整的按键控制LED并触发ADC采样的项目,深入剖析了GPIO寄存器配置、三级中断机制(外设-PIE-CPU)以及中断服务函数编写的核心要点,帮助开发者掌握嵌入式交互设计的基石,并提供了关键的避坑指南与调试清单。

weixin_29169899的博客 115

《21天学通C++》阶段性成果测试题——hstring(手写string类)

总体考察了类的使用,缓冲区考察了指针和数组的使用、增删改查、考察编码思维、考察了类的重载。1.初始化子字符串的起始位置为-1,表示未找到,若buffer或findHstring为空,则返回-1。右边的字符串不为空,则分别获取母串和子串的长度(用循环),然后创建一个固定大小的数组。3.然后循环遍历寻找子串在母串中的起始位置,循环时可以通过两个长度相减,避免循环越界。2.如都不为空,则分别获取双方的字符串长度(用循环),然后。右边的字符串为空,则输出原来的字符串。是否为空,有一方为空则返回另一方。

立志成为炼丹师? 1263

Protocol Buffer——protobuf安装 编译 使用 C++ windows平台 VS19 结合 CMake

在Protobuf documentation(以下链接)中复制例子addressbook.proto文件到项目目录C:\Users\Dua_mond\Source\Repos\Project2\Project2中。

m0_56410289的博客 5545

手把手复现论文:SVPWM过调制I区与II区算法仿真(附MATLAB源码)

本文详细介绍了SVPWM过调制I区与II区算法的MATLAB仿真实现,从理论推导到Simulink建模逐步解析。通过源码示例展示幅值补偿和六边形跟踪等关键技术,帮助电力电子研究者掌握过调制算法的核心实现方法,适用于电机控制、变频器等工业应用场景。

weixin_28739079的博客 529

CMake自动按目录结构编译Protobuf代码

CMake自动按目录结构编译protobuf代码

witton的专栏 3101

手把手教你学Simulink实例:基于Simulink的超级电容器充放电仿真

超级电容器(Supercapacitor)是一种高容量电容器,具有快速充放电能力、长寿命和高功率密度等优点。它在能量存储系统、电动汽车、不间断电源(UPS)等领域有广泛应用。为了更好地理解和设计超级电容器的应用系统,通常需要进行详细的仿真分析。Simulink 提供了一个强大的仿真环境,可以用来设计、分析和验证超级电容器充放电系统的控制策略。本教程将详细介绍如何使用 Simulink 进行超级电容器充放电的仿真实例。通过本教程,我们详细介绍了如何使用 Simulink 进行超级电容器充放电的仿真实例。

MHD0815的博客 581

高项备考论文:规划绩效域

高项备考论文:规划绩效域

liuxu324的博客 1125

Hello! protobuf——编译与安装(c++版)

Protocol Buffers是Google开发的一种平台无关,语言无关,可扩展的的序列化结构数据格式,类似与XML,但是比XML更小,更快,更简单。你只需要按照规则定义你需要的数据结构,然后通过专门的源代码生成工具就可以生成各种语言所需要的数据类文件。非常好用~ ...

wzw1609119742的博客 1万+

【信息科学与工程学】信息科学领域——第一百三十三篇 半导体器件物理与电子封装01

③ 载流子浓度:n=∫Ec​∞​gc​(E)f(E)dE,f(E)=1+exp((E−EF​)/kB​T)1​,非简并时 n=Nc​exp(−kB​TEc​−EF​​),Nc​=2(ℏ22πme∗​kB​T​)3/2。简并时需用Fermi-Dirac积分 F1/2​(η)=π​2​∫0∞​1+ex−ηx​​dx,n=Nc​π​2​F1/2​(η),η=(EF​−Ec​)/kB​T。对于低维系统:2D g2D​(E)=πℏ2m∗​Θ(E−Ec​),1D g1D​(E)=πℏ1​E2m∗​​。

weixin_49199313的博客 552

Protocol Buffer编译器安装

Protocol Buffer编译器安装如何安装protocol buffer编译器使用软件包管理器进行安装安装预编译的二进制文件(任何操作系统)其他安装选项 本文翻译自Protocol Buffer Compiler Installation 如何安装protocol buffer编译器 尽管不是强制性的,但gRPC应用程序通常利用Protocol Buufer来进行服务定义和数据序列化。 该站点上的大多数示例代码都使用protocol buffer语言(proto3)的版本3。 protocol bu

ccf19881030的专栏 1855

DDR5 的 PI: DIMM 上 PMIC,正在制造一批“新型 EMI 问题”

DDR5 的 PI,不再只是“供电设计”,而是一次“噪声管理设计”。电压稳定本地调节高频噪声EMI 风险系统不确定性DDR5 真正难的地方,不是跑起来,而是——在最差条件下,它还能不能一直跑。而 DIMM 上那颗 PMIC,正是你绕不开的关键角色。

weixin_43199439的博客 179

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

Protocol Buffer 基础:C++ 教程

本教程介绍了如何使用Protocol Buffer进行C++开发。通过创建一个简单的地址簿应用示例,展示了定义消息格式(.proto文件)、使用protoc编译器生成代码,以及利用C++ API读写消息的完整流程。文章详细说明了Protocol Buffer相比XML等方案的性能优势,并解析了生成的C++类结构,包括字段访问器、修改器方法和枚举嵌套类等核心功能。教程还提供了编译器安装指南和生成文件说明,帮助开发者快速上手Protocol Buffer的高效数据序列化方案。

JeSuisDavid的博客 1108

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

Protocol Buffer学习教程之类库应用(四)

Protocol Buffer学习教程之类库应用(四)     此教程是通过一个简单的示例,给C++开发者介绍一下如何使用protocol buffers编程,主要包括以下几部分: 定义一个.proto文件 如何使用protocol buffer编译器生成C++类文件 如何使用Protocol buffer api读写消息   这并不是分全面的protocol buffer的C++

MingoJiang 557

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

Grpc+protocol buffer使用学习

An introduction to gRPC and protocol buffers. GRPC和协议缓冲区: gRPC可以使用协议缓冲区作为它的接口定义语言(IDL)和它的底层消息交换格式。 个人理解:一种交互协议,主要实现数据的传输,体积小,更加便捷,高效,由google公司开发的proto协议缓冲区,支持多种语言开发和生成。 一, GRPC概述 在gRPC中,客户机应用程序可以直接调用另一台机器上的服务器应用程序上的方法,就好像它是本地对象一样,这使您更容易创建分布式应用程序和服务。 正如在许多R

MatChen的博客 2050

Google Protocol Buffer序列化入门实战(附源码)

Google Protocol Buffer入门实战(附源码)Google Protocol Buffer(后面简称PB)是Google开源的一款二进制序列化工具,占用空间小,传输效率高。最近由于项目中使用到了PB,所以特地学习了PB,这篇文章也是自己学习PB的一些小结。根据官方定义,PB是一个语言中立,平台中立的,用于序列化结构化数据的协议。说到序列化,可能大家最容易想到的是JDK自带的序列化协议

rhwayfun专栏 4174

Protocol Buffer 二 简单例子之C++程序

我的例子是为了证明Protocol Buffer良好的跨语言特性。例子由两个程序构成,一个是C++程序,负责将对象User序列化到文件中。另一个是Java程序,负责从文件中反序列化成User对象。下面的图形反映了两个程序以及Protocol Buffer之间的关系。先设计User对象的proto文件,Protocol Buffer编译器要利用它生成C++文件和Java文件。package samp

Dean Chen的专栏 6461

Protocol Buffer在MCU上的实现--C语言

一 什么是Protocol Buffer Protocol Buffer是一种支持多平台、多语言、可扩展的的数据序列化机制,相较于XML来说,protobuf更小更快更简单,支持自定义的数据结构,用protobuf编译器生成特定语言的源代码,目前protoBuf对主流的编程语言都提供了支持,非常方便的进行序列化和反序列化。 官方网址 官方支持的语言有: Java Python Objective-C C++ Dart Go Ruby C# 这里对Protocol Buffer的语法不做过多解释,这篇文章

ching的专栏 3759

Protocol Buffer学习教程之开篇概述(一)

原创文章,不得转载 1. Protocol Buffer是什么 Protocol Buffer是google旗下的产品,用于序列化与反序列化数据结构,但是比xml更小、更快、更简单,而且能跨语言、跨平台。你可以把你的数据按你的要求结构化,然后可以转化成多种数据流,同时其他语言可以通过不同的流转化成自己熟悉的语言的数据格式。如C语言开发者,定义了一个User数据结构,java开发者可以把此数据流

MingoJiang 1739

Protocol Buffer 三 简单例子之Java程序

首先用maven创建一个简单的Java application.mvn archetype:generate -DgroupId=org.freebird.protocolbuffer -DartifactId=sample -DarchetypeArtifactId=maven-archetype-quickstart -DinteractiveMode=false创建的目录结构如下:$ tre

Dean Chen的专栏 4590

Protocol Buffer 笔记

文章目录参考文献快速入门1. 简介2. 使用ProtoBuf的例子2.1. 创建 .proto 文件,定义数据结构2.2. 安装ProtoBuf编译器WindowsUbuntu2.3. 将.proto文件,编译成指定语言类库2.4. 在代码中使用ProtoBuf对数据进行序列化和反序列化定义消息1. 语法2. 字段类型3. 分配标识号4. 修饰符5. 注释6. 为消息定义包7. 选项8. 将消息编译成各种语言版本的类库标量类型枚举类型数组类型1.整数数组的例子:2.字符串数组消息嵌套1.引用其他消息类型的用

weixin_42309199的博客 1506

Google Protocol Buffer

什么是 Google Protocol Buffer? 假如您在网上搜索,应该会得到类似这样的文字介绍:Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 个 .proto 文件。他们用于 RPC 系统和持续数据存储系统。Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,或者说序列化。它很适合做数据存储或 RPC 数据交

rongrong0206的专栏 1408
上一篇: 64位Windows系统下32位应用程序连接MySql
下一篇: Protocol Buffer学习教程之类库应用(四)
MingoJiang
博客等级 码龄14年 161粉丝 41原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

MingoJiang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值