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。
再次点击编译,是不是成功啦?是不是?激动不?
你一定会以为我会给你一个示例工程,不,作者不是一个随便的人,我是不会这样做的,满网都是,我写他干嘛?
其实我还是会给你一个高级一点的实例工程的,下条博客见。。。。(你们知道这是哪个梗吗?)
版权是我所有滴,转载是要告诉我滴(其实你要是转载我是很高兴滴,不过记得说明出处啊)
提问题我是很欢迎滴,我是很喜欢被骚扰滴!
希望对您有帮助!
windows下使用vs进行Proctocol Buffer开发(C++篇)的更多相关文章
- Windows下visual studio code搭建golang开发环境
Windows下visual studio code搭建golang开发环境 序幕 其实环境搭建没什么难的,但是遇到一些问题,主要是有些网站资源访问不了(如:golang.org),导致一些包无法安装 ...
- 在 Windows 下用 TDM-GCC(MinGW)开发 DLL 涉及到数据同步锁及 DLL 初始化终止化函数的问题
在 Windows 下用 TDM-GCC(MinGW)开发 DLL 如果要用到数据同步锁,理论上可以采用 Windows API 提供的临界区实现(需要用到的函数有 InitializeCritica ...
- windows下sqli-labs的搭建及学习(POST篇)
windows下sqli-labs的搭建及学习(GET篇): http://blog.csdn.net/sherlock17/article/details/64454449 Less-11:基于错误 ...
- Windows下用Eclipse搭建C/C++开发环境
本文假定你已经熟悉Java,Eclipse的安装,并能顺利启动和运行Eclipse.此外因为各软件版本在不断更新,有些地方可能不准确,以最新的.原文资料为准. 距上一次写和调C++程序,已经5.6年了 ...
- Windows 下使用 MinGW 和 CMake 进行开发
CMake 是个非常棒的项目管理工具,这已经是毋庸置疑的. 一些小工具需要在 win 下开发,所以今天探索使用 MinGW 和 CMake 在 win 下的搭配使用.简单做记录. MinGW 使用 Q ...
- windows下sublime text的node.js开发环境搭建
首先安装sublime text3,百度一堆,自己找吧.理论上sublime text2应该也可以.我只能说一句:这个软件实在是太强悍了. 跨平台,丰富的插件体系,加上插件基本上就是一个强悍的ide了 ...
- windows下用ADT进行android NDK开发的具体教程(从环境搭建、配置到编译全过程)
郑重申明:如需转载本博客,请注明出处,谢谢! 这几天在学习android NDK的开发.那么首先让我们来看看android NDK开发的本质是什么. NDK(Native Development Ki ...
- 不用rustup,Windows下gnu版Rust安装与开发环境配置
写在前面 本文介绍了在不使用rustup的情况下,在Windows上安装gnu版的Rust,并配置开发环境(VSCode + rust-analyzer,CLion + IntelliJ Rust)的 ...
- windows下sqli-labs的搭建及学习(GET篇)
环境搭建: 源码下载地址:https://github.com/Audi-1/sqli-labs 需要搭建以下环境: apache+mysql+php Tomcat+mysql+java(部分关卡需要 ...
随机推荐
- tabbarItem字体及图片颜色设置
tabbarItem设置图片后运行往往与我们原始图片颜色有出入,这是因为在默认情况下,未选中状态图片和字体颜色为灰色,选中状态下图片和字体颜色为蓝色. UIImage 在呈现(render)时会选 ...
- 【代码笔记】iOS-下拉菜单
一,效果图. 二,工程图. 三,代码. RootViewController.h #import <UIKit/UIKit.h> @interface RootViewController ...
- 【代码笔记】iOS-通过颜色来生成一个纯色图片
一,效果图. 二,代码. RootViewController.m - (void)viewDidLoad { [super viewDidLoad]; // Do any additional se ...
- nodejs 中自定义事件
经常看到 req.on('error', function(){...}); 这种代码. 在nodejs中,可以使用 EventEmitter来实现. 具体的关键词有如下几个: var reqEven ...
- SQL SERVER 临时表的排序问题
在SQL SERVER 2005/2008中,如果将有序的记录插入临时表,则从临时表查询出来的记录是有序的(不依赖ORDER BY也是有序状态),但是从SQL SERVER 2012开始,即使插入的记 ...
- Windows Server 2012 虚拟化实战:域
在Windows Server系统中,一些服务必需要构建在域的环境中,这不仅是为了统一验证和资源共享,同时也是为了网络安全.为构建虚拟化测试,我们需要先搭建域环境.之前先来大概了解一下域. 在使用工作 ...
- Shelve Instance 操作详解 - 每天5分钟玩转 OpenStack(38)
Instance 被 Suspend 后虽然处于 Shut Down 状态,但 Hypervisor 依然在宿主机上为其预留了资源,以便在以后能够成功 Resume. 如果希望释放这些预留资源,可以使 ...
- Linux的概念与体系
作者:Vamei 出处:http://www.cnblogs.com/vamei 欢迎转载,也请保留这段声明.谢谢! 我在这一系列文章中阐述Linux的基本概念.Linux操作系统继承自UNIX.一个 ...
- EF 数据库连接字符串-集成安全性访问 SQL Server
使用 Windows 集成安全性访问 SQL Server 如果您的应用程序运行在基于 Windows 的 Intranet 上,则也许可以将 Windows 集成身份验证用于数据库访问.集成安全性使 ...
- 基于ionic+cordova+angularJs从零开始搭建自己的移动端H5 APP
这里详细介绍下如何用ionic+cordova+angularjs搭建自己的移动端app,包括环境搭建,框架使用等,具体项目已放置在github上,可下载下来自行启动. 下载地址:https://gi ...