本教程使用的系统是64位的win10系统,IDE用的是Visual Studio 2017 Enterprise

一、代码和工具下载

1.Protocol Buffers v3.8.0:

https://github.com/protocolbuffers/protobuf/releases/tag/v3.8.0

这里我们编译的是C++版本,所以只需要 protobuf-cpp-3.8.0.zip 即可

图1

2.CMake v3.14.5:

https://cmake.org/download/

这里我们使用最新的64位版本 cmake-3.14.5-win64-x64.msi,下载完后直接安装即可

图2

二、生成protobuf的vs工程文件

1. 新建protobuf目录

用来存放下载好的代码和软件,整个目录结构最好是全英文的。

E:protobuf

protobuf-cpp-3.8.0.zip 直接解压到这个目录下

E:protobufprotobuf-3.8.0E:protobufprotobuf-3.8.0src 这里是C++部分

这个目录里面就是protobuf的源代码

2. 新建protobuf_build_2017_x64目录

用来存放 protobuf 的 visual studio 工程文件

E:protobufprotobuf_build_2017_x64

图3

3. CMake 生成 protobuf 的 vs 工程文件

  • 打开CMake软件
  • 在“Where is the source code” 项后填入 E:protobufprotobuf-3.8.0cmake
  • 在“Where to build the binaries” 项后填入 E:protobufprotobuf_build_2017_x64

图4

  • 点击Configure 按钮,打开界面

图5

  • 在“Specify the generator for this project” 选项中选择“Visual Studio 15 2017”
  • 在“Optional platform for generator” 选项中选择“x64”
  • 在“Optional toolset to use” 这个选项上不填为空
  • 选择“Use Default native compilers”
  • 点击 Finish 按钮

图6

  • 如上图所示,可能会出现警告信息,但是只要没有error信息就可以,出现“Configuring done”表示配置成功
  • 点击Generate按钮,出现“Generating done”表示工程文件生成成功。
  • 然后点击Open Project按钮即可打开 protobuf.sln 工程

图7

三、protobuf工程编译

图8

从上图可以看到protobuf包含了很多工程,我们自己用的主要就是libprotobuflibprotocprotoc这三个,你可以只编译这三个,也可以全部编译,还可以选择Debug和Release版本。

Debug版本结果:

图9

Release版本文件:

图10

可以看到Debug版本和Release版本的文件名是不同的。

到了这一步,protobuf的编译全部结束了,接下来说如何使用它们。

特别注意:如果你编译的是Debug版本,那么你自己的工程也得是Debug版本,否则会出错,同理如果是Release版本,那么你的工程也必须是Release版本使用。

在第五部分问题解答里,有这个问题的答案

四、protobuf的使用

  1. VS2017 新建一个空的C++控制台项目,命名为 ProtobufTest
  2. 在工程目录下新建 proto_filelibinclude 三个文件夹。如图11所示。
  3. protobuf-3.8.0srcgoogle 这个目录拷贝到 include 目录下。
  4. 将第三部分生成的 Debug 版本的库文件(libprotobufd.lib,libprotocd.lib)拷贝到 lib 文件夹
  5. 将第三部分生成的 Debug 版本的 protoc.exe 文件拷贝到 proto_file 文件夹
  6. proto_file 文件夹下新建 addressbook.protogenmsg.bat 两个文件。如图12和图13所示。
  7. 执行 genmsg.bat 就会生成 addressbook.pb.haddressbook.pb.cc 这两个文件。如图14所示
  8. 将这两个文件拷贝到工程所在目录,并新建main.cpp文件,如图15所示
  9. 接下来是最关键的几个步骤,一定要做对了。
  10. 右键 ProtobufTest 打开“ProtobufTest 属性页”对话框,配置选择Debug,平台选择x64,因为我们使用的是第三部分生成的Debug库文件(如果你想配置Release,那么必须使用第三部分生成的Release库文件).
  11. 在“C/C++”的“常规”标签页,找到“附加包含目录”,添加“include”,如图16所示。
  12. 在“C/C++”的“代码生成”标签页,找到“运行库”,选择“多线程调试(/MTd)”,如图17所示。这个步骤需要特别说一下,这里的选择和你编译libprotobuf这个工程的这个部分的设置一定要一致,否则会出错。如图18所示
  13. 在“链接器”的“常规”标签页,找到“附加库目录”,添加“lib”,如图19所示。
  14. 在“链接器”的“输入”标签页,找到“附加依赖项”,添加“libprotobufd.lib;libprotocd.lib;”如图20所示。
  15. 右键“ProtobufTest”,选择“添加”,选择“现有项”,将 addressbook.pb.h,addressbook.pb.cc,main.cpp 三个文件添加到工程中,如图21所示。
  16. 编辑 main.cpp 文件的内容,如图22所示。
  17. 如果编译成功,那么恭喜你,你已经可以成功使用protobuf了。
  18. 运行程序后,会生成一个person1.log文件,文件内容如图23所示。

图11

图12

图13

图14

图15

图16

图17

图18

图19

图20

图21

图22

图23

同一目录下拷贝文件夹里_protobuf在C++下的安装使用相关推荐

  1. java 包含文件_java 文件夹拷贝(文件夹里包含文件和文件夹) 代码

    java代码实现文件夹拷贝,文件夹可能包含文件夹和文件import java.io.BufferedReader; import java.io.File; import java.io.FileIn ...

  2. cmd xcopy 拷贝文件夹_在纯dos下用xcopy命令怎么复制文件夹

    在纯 dos 下用 xcopy 命令怎么复制文件夹 XCOPY --目录复制命令 1 .功能:复制指定的目录和目录下的所有文件连同目录结构. 2 .类型:外部命令 3 .格式: XCOPY [ 源盘: ...

  3. linux添加windows字体文件夹里,如何把Windows下的字体添加到Linux中

    如何把Windows下的字体添加到Linux中 Linux(Fedora/Ubuntu/CentOS)的字体实在不尽如人意,而且在网页及文档显示时很多字无法显示出来,特别多的空白和乱码,其实,我们可以 ...

  4. linux ie 插件目录在哪个文件夹里,Linux下的IE浏览器使用方法[图]

    各位Linux使用者必然遇到的一个问题是:在Linux下用mozilla或其它系列的浏览器打开某个asp网站时出现一些奇怪现象,要么某些部分不能显示,要么某些按钮不能按,要么某输入框不能输入-- 本人 ...

  5. Qt笔记-windows下拷贝文件夹中所有文件

    这里其实各个平台都通用,但个人感觉,如果是linux,直接用shell命名.更加方便. 这里逻辑是这样的. 递归函数,直接先找到最里面,把文件拷贝.然后逐步出来即可! 下面是代码: generatef ...

  6. Linux下查看文件夹下文件个数

    统计某文件夹下文件的个数 ls -l |grep "^-"|wc -l 统计某文件夹下目录的个数 ls -l |grep "^d"|wc -l 统计文件夹下文件 ...

  7. Mac 根目录下创建文件夹

    Mac 根目录下创建文件夹 一.在根目录下用sudo创建文件夹. 在/System/Volumes/Data/目录下创建所需文件夹 cd /System/Volumes/Data/ sudo mkdi ...

  8. Java io流---拷贝文件夹下的所有文件和目录

    Java io流-拷贝文件夹下的所有文件和目录 代码: package demo01;import java.io.*; import java.util.TreeMap;public class C ...

  9. C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中的方法

    原文地址:http://www.biye5u.com/article/Csharp/fileprog/2011/4198.html 本文给出了一个在C#中拷贝指定文件夹下的所有文件夹目录到指定文件夹中 ...

最新文章

  1. 经典PV操作问题 [转]
  2. pandas中where函数的用法
  3. What are HANA's models of cloud computing, and which should I choose?
  4. HiveSQL运行优化参数配置
  5. 电子科大电气工程导师介绍绍_预告|卓越讲堂第二期——电气工程及其自动化专业介绍...
  6. IntelliJ IDEA开发工具安装Scala插件使用
  7. android显示布局边界的边距_Android设计规范 Material Design-Layout(2 度量与边框)
  8. 渤海发现大油田,证券会提示风险,微博回应流量造假,刘国梁制定史上最严奖惩体系,这就是今天的大新闻。...
  9. centos 安装oracle java,CentOS 4.4下安装Oracle 10
  10. 让美团、京东、搜狐都说好的数据仓库,牛在哪?
  11. iOS开源App整理
  12. 超全面整理,Selenium 八大元素定位方式,(建议收藏反复使用)
  13. 常用NMEA0183的报文解析
  14. matlab可以输出图像吗,MATLAB中使用程序输出图片
  15. MVVM框架原理浅析
  16. 根据银行卡号查询银行名接口
  17. git安装 苹果笔记本_远程系统重装安装电脑维修笔记本台式xpwin7810苹果mac双系统安装...
  18. 如何有效实现软件的需求管理 - 2
  19. Javascript ES6(一)
  20. 银河麒麟批量压缩图片的方法

热门文章

  1. 零基础机器学习(1)- 我们为什么要学习Python?
  2. SQL Server where语句使用举例
  3. python字典循环添加元素_牛鹭学院:学员笔记|python字典、列表、循环
  4. python os如何创建文件夹_Python怎样创建文件夹,怎样删除文件夹
  5. linux php cpu,查找linux下进程占用CPU过高的原因,以php-fpm为例
  6. python 源码编译教程_python源码编译
  7. ireport怎么套打_DNF小小王国历险记巨人击退战怎么打 巨人击退战通关技巧攻略...
  8. curl post请求 header host_(科普文)curl quot;可quot;得一切
  9. linux spidev 应用_嵌入式Linux设备树语法总结
  10. python安装成功的图标_安装Python