windows下使用vs进行Proctocol Buffer开发(C++篇)

因工作原因接触Proctocol Buffer(protobuf),至于什么是protobuf,为何使用protobuf,我就不赘述了,百度下都是答案。

今天我介绍的是在windows下使用vs进行protobuf开发的环境配置过程及简单示例。

首先给出官方的网址镇楼,各种官方资料在这里都可以找到https://github.com/google/protobuf

接触新技术时,在开始免不了一头雾水,首先概括的给出在windows下使用vs进行Proctocol Buffer开发(C++)的基本步骤

1.下载代码包

2.形成sln文件

3.编译出需要的lib文件和protoc.exe(exe程序可以直接下载得到)

4.编写.proto文件

5.利用protoc.exe文件生成.c和.h文件

6.在工程中添加相关资源(.c和.h文件以及lib库)  完成

还是比较清晰的,只是刚开始可能摸不到门路,不知从何下手。对了,补充一下我的运行环境 windowsx64 + vs2013

从官方下载你需要的protobuf源码包版本,如果你选择2.6.1,那么恭喜你,配置还是相当简单的,如果选择3.0.0,那么也恭喜你,你可以学习使用一下cmake

(其实说实话可能是我懒,不喜欢linux,喜欢使用宇宙最强IDE vs,让vs代替我做,跑题了。。。)

1.形成sln文件

2.6.1版本中,打开文件夹“vsprojects”,里面有个.sln文件,打开就可以了,对,就是这么简单。

3.0.0版本中,没有这个文件夹(可能是忘记了?还是我蠢没找到),不要慌,cmake文件夹下readme中明确的告诉了我们怎么生成这个sln文件。下面我就来翻译一下(其实是我加上我试验结果的)

需要下载Cmake工具(不会的就不要来搞protobuf了。。。哈哈)

打开vs2013 x64本机工具命令提示,在开始菜单里,vs下面的tools里面,我的路径C:\Program Files (x86)\Microsoft Visual Studio 12.0\Common7\Tools\Shortcuts,实在找不到可以参考一下。

安装或者解压你下载的cmake

在我们亲爱的黑框框里(x64本机工具命令提示) 添加cmake环境变量(path\to 是官方文档里的实例路径)

C:\Path\to>set PATH=%PATH%;C:\Program Files (x86)\CMake\bin

cd命令进入你下载源码包的cmake文件夹下,在cmake文件夹中创建新目录build并进入。

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

创建一个release目录,如果成功,黑框框中不提示错误,并且你生成了一坨东西在对应的目录下。

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目录

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 ^
../..

最关键的一步来啦,生成sln文件

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 ^
../..

生成成功之后,就可以双击sln文件,在vs下进行编译了。

在生成过程中,悲催的我因为电脑环境的原因发生了找不到kernel32.lib的问题导致生成失败,搞了半天弄不好,最后通过打开vs安装程序,点击修复解决。

你看是不就生成啦!

之后用vs打开该工程,编译,你看是不生成里多了东西,其中就有protoc.exe和libprotobuf.lib和libprotoc.lib文件,这个就是我们需要的

利用protoc.exe运行意下命令生成.c和.h文件

protoc -I=$SRC_DIR --cpp_out=$DST_DIR $SRC_DIR/xxx.proto

前提是你要有一个xxx.proto文件,至于这个文件怎么写,请看链接

http://www.cnblogs.com/dkblog/archive/2012/03/27/2419010.html

2.创建C++控制台测试工程

好了,到这一步说明你手上有滚烫烫的.cc和.h文件,以及libprotobuf.lib和libprotoc.lib,已经迫不及待的要创建测试工程了,好吧,看你这么饥渴的份上,就满足你创建一个吧。哈哈哈哈(I是精神病,你们见谅)

创建一个控制台工程,c++的,添加.cc 和.h文件,include .h文件,编译,发现出错

error c1010,是否忘记添加#inlcude"stdfx.h"

生成的.cc文件中第一行就说请勿修改,但是我们就是要修改,加上stdafx.h头文件,对,就是这么任性,你有源码你怕啥!

然后添加上述两个.lib文件

点击“配置属性”下“c/c++”的“常规”,在右侧的“附加包含目录”,导入路径protobuf-xxx\src(从github上下载的源码包)。 编译,对,又出错,哪回让你一帆风顺?年轻人吃点苦不是啥坏事。。。。(此处省略10000000字,加痛打作者300回合)

错误是

error c4996 std::Copy_impl。。。。。。。

解决方法:点击“属性”中的“c\c++”下的“预处理器”,在右侧的“预处理器定义”中添加_SCL_SECURE_NO_WARNINGS。

再次点击编译,是不是成功啦?是不是?激动不?

你一定会以为我会给你一个示例工程,不,作者不是一个随便的人,我是不会这样做的,满网都是,我写他干嘛?

其实我还是会给你一个高级一点的实例工程的,下条博客见。。。。(你们知道这是哪个梗吗?)

版权是我所有滴,转载是要告诉我滴(其实你要是转载我是很高兴滴,不过记得说明出处啊)

提问题我是很欢迎滴,我是很喜欢被骚扰滴!

希望对您有帮助!

上一篇:苹果内购小结 - iOS


下一篇:NSMutableArray和NSArray的常用方法及相互转换