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(部分关卡需要 ...
随机推荐
- IOS 页面间跳转
常用的就两种 一种通过导航,一种直接跳 第一种 直接跳转 思路大致就是new一个目的页面,然后设置下页面跳转动画 中间还可以做点目的页面的数据初始化: ValueInputView *valueVie ...
- React Native知识5-Touchable类组件
React Native 没有像web那样可以给元素绑定click事件,前面我们已经知道Text组件有onPress事件,为了给其他组件 也绑定点击事件,React Native提供了3个组件来做这件 ...
- iOS之weak和strong、懒加载及循环引用
一.weak和strong 1.理解 刚开始学UI的时候,对于weak和strong的描述看得最多的就是“由ARC引入,weak相当于OC中的assign,但是weak用于修饰对象,但是他们都不会造成 ...
- git笔记
这篇有关git的博客,写着写着有些崩了.里面有些碎碎念了.下次一定注意这个问题. 创建项目: midir xx :创建xx文件夹 git init : 为当前文件夹创建代码仓库 提交代码: git a ...
- Shell 编程
Shell 是一门脚本语言(又称解释型语言),Shell 其实就是一个纯文本文件,通常以[#!/bin/bash]开始.脚本自上而下,从左至右分析并执行,其中[#]后面的为注释.脚本有以下几种运行方式 ...
- Zookeeper 原理
ZooKeeper是一个分布式的,开放源码的分布式应用程序协调服务,它包含一个简单的原语集,分布式应用程序可以基于它实现同步服务,配置维护和命名服务等.Zookeeper是hadoop的一个子项目,其 ...
- Linux 格式化扩展分区(Extended)
如果你在Linux系统中格式化磁盘时遇到如下错误,那么表示你正在格式化一个扩展分区. [root@GETTestLNX06 ~]# mkfs.ext4 /dev/sdb1 mke2fs 1.41. ...
- YourSQLDba开源项目发布到codeplex网站了
今天登录YourSQLDba的官方网站http://yoursqldba.grics.ca/index_en.shtml,发现YourSQLDba项目已经发布到开源网站http://www.codep ...
- MongoDB学习笔记~为IMongoRepository接口添加了排序和表达式树,针对官方驱动
回到目录 MongoDB的官方驱动,语法更好,更强 之前写过关于IMongoRepository仓储的文章,在mongodb的驱动选择上使用了NoRM,但是进行$ref引用类型导航时出现了问题,它对引 ...
- 关于linux,我们应该学什么?
为了系统地学习一下linux相关知识,我花了三天的时间看完了那本经典的<鸟哥的linux私房菜>.所谓的经典必然是有其过人之处,而看完这本书之后,我毫无疑问地加入了强烈推荐这本书的行列. ...