google protobuf学习笔记:windows下环境配置
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45371743
protobuf的使用和原理,请查看:http://blog.csdn.net/majianfei1023/article/details/45112415
Windows下google protobuf开发环境配置
最近项目需求,Client与Server的网络通信协议传输使用google protobuf rpc。对于Protobuf,以前是只知道有这个东西,知道它干嘛,而且一直很仰慕,但是从来没学习过,最近刚好趁着项目机会,好好学习学习。
这篇主要讲,在windows下用vs2012配置google protobuf开发环境。
一.准备工作:
1.Windows7或其他Windows系统.
2.Visual Studio 2012或其他版本VS.
3.protobuf:我使用的是最新版本的protobuf(protobuf-2.6.1)。
windows下,需要下载两个包:
protobuf-2.6.1.tar.bz2 (protobuf所有的源码都在里面,用它进行编译成lib库)
protoc-2.6.1-win32.zip(内涵protoc.exe,用来把proto文件编译成目标语言(C++,Java,Python)的文本,是google protobuf定义的格式。其实这个文件不是必须的,编译protobuf-2.6.1.tar.bz2的时候会生成这个exe)
去官网下载protobuf的source code和编译工具:https://developers.google.com/protocol-buffers/docs/downloads
然后解压:我本地的路径是D:\protobuf-2.6.1
二.配置环境:
1.进入 D:\protobuf-2.6.1\vsprojects,用vs2012运行protobuf.sln,然后build solution。
这些大家都会,我就不罗嗦了。
然后你就会发现,D:\protobuf-2.6.1\vsprojects\Debug目录下出现了很多内容,最重要的几个就是:libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe
2.D:\protobuf-2.6.1\examples本来是有例子的,我们亲自实践下,动手自己在此目录下定义一个proto:
package tutorial;
message Person {
required string name = 1;
required int32 age = 2;
optional string email = 3;
}
然后使用cmd运行protoc.exe生成我们的目标语言格式(c++).
cd D:\protobuf-2.6.1\vsprojects\Debug
D:\protobuf-2.6.1\vsprojects\Debug>protoc -I=D:\protobuf-2.6.1\examples --cpp_out=D:\protobuf-2.6.1\examples D:\protobuf-2.6.1\examples\person.proto
然后可以看到,生成了person.pb.h和person.pb.cc的文件。
3.我们用vs2012新建一个空的项目,选择属性,配置一下:
点击 配置属性 下的 C/C++ 的 常规,右边附加包含目录,导入这个路径D:\protobuf-2.6.1\src
点击链接器 的常规,右边的附加库目录,导入这个路径D:\protobuf-2.6.1\vsprojects\Debug
三.开始一个最简单的项目
好了,一切配置好了,该写代码了,我们做一个最简单的输入输出。新建一个main.cpp,然后把之前生成的person.pb.h和person.pb.cc复制到项目里面,并添加到项目里面。
#include <iostream>
#include "person.pb.h"
using namespace std;
using namespace tutorial;
int main()
{
Person person;
person.set_name("flamingo");
person.set_age(18);
cout<<person.name()<<endl;
cout<<person.age()<<endl;
system("pause");
return 0;
}
有些人说可以正常运行,但是我这边不行,主要是
网上查找原因,终于发现,需要在代码里面加两行:
#pragma comment(lib, "libprotobuf.lib")
#pragma comment(lib, "libprotoc.lib")
就能正常跑了:
protobuf的使用和原理,请查看:http://blog.csdn.net/majianfei1023/article/details/45112415
google protobuf学习笔记:windows下环境配置的更多相关文章
- PHP学习笔记----IIS7下安装配置php环境
原文:PHP学习笔记----IIS7下安装配置php环境 Php如何安装 Php版本的选择 Php在windows下的(php5.4.7)有两种版本: VC9 x86 Non Thread Safe ...
- Django:学习笔记(1)——开发环境配置
Django:学习笔记(1)——开发环境配置 Django的安装与配置 安装Django 首先,我们可以执行python -m django --version命令,查看是否已安装django. 如果 ...
- QT学习之windows下安装配置PyQt5
windows下安装配置PyQt5 目录 为什么要学习QT 命令行安装PyQt5以及PyQt5-tools 配置QtDesigner.PyUIC及PyRcc 为什么要学习QT python下与界面开发 ...
- RabbitMQ学习在windows下安装配置
RabbitMQ学习一. 在windows下安装配置 1.下载并安装erlang,http://www.erlang.org/download.html,最新版是R15B01(5.9.1).由于我机器 ...
- Mongodb学习笔记一(Mongodb环境配置)
Mongodb学习 说明: MongoDB由databases组成,database由collections组成,collection由documents组成,document由fileds组成.Mo ...
- Core Java 学习笔记——1.术语/环境配置/Eclipse汉化字体快捷键/API文档
今天起开始学习Java,学习用书为Core Java.之前有过C的经验.准备把自己学习这一本书时的各种想法,不易理解的,重要的都记录下来.希望以后回顾起来能温故知新吧.也希望自己能够坚持把自己学习这本 ...
- Nodejs 学习笔记 --- 安装与环境配置
一.安装Node.js步骤 1.下载对应自己系统对应的 Node.js 版本,地址:https://nodejs.org/zh-cn/ 2.选安装目录进行安装 3.环境配置 ...
- MIT JOS学习笔记01:环境配置、Boot Loader(2016.10.22)
未经许可谢绝以任何形式对本文内容进行转载! 一.环境配置 关于MIT课程中使用的JOS的配置教程网上已经有很多了,在这里就不做介绍,个人使用的是Ubuntu 16.04 + qemu.另注,本文章中贴 ...
- 学习笔记——Windows下cocos2d-x,eclipse中自编译
cocos2d-x创建的安卓项目导入eclipse后. 在项目属性中配置Builders. 在eclipse编译还需要配置相应的变量,即后面提到的cygwin编译中要添加的变量. D:/cygdriv ...
随机推荐
- Atcoder Grand Contest 001E - BBQ Hard(组合意义转化,思维题)
Atcoder 题面传送门 & 洛谷题面传送门 Yet another 思维题-- 注意到此题 \(n\) 数据范围很大,但是 \(a_i,b_i\) 数据范围很小,这能给我们什么启发呢? 观 ...
- Run For Beer CF575G
Run for beer CF 575G 如果直接bfs分层贪心可以做,但是很毒瘤,具体可以参考Gavinzheng的提交 考虑魔改dijkstra 首先,每次拿权值最小的来松弛肯定没有问题,只是怎么 ...
- BaiduPCS-Go----百度云下载工具
1.网页登录百度网盘:https://pan.baidu.com/2.百度输入法生成:http://pcs.baidu.com/rest/2.0/pcs/file?app_id=265486& ...
- 内存管理malloc 2
malloc可以在函数指针内使用.#include <stdio.h> #include <stdlib.h> char * get_string() { //char s[] ...
- Matlab | 绘制动态曲线(使用 animatedline 对象)
效果如下: 示例代码: figure('Color','w'); h1 = animatedline; h1.Color = 'r'; h1.LineWidth = 1.0; h1.LineStyle ...
- Go 性能提升tips--边界检查
1. 什么是边界检查? 边界检查,英文名 Bounds Check Elimination,简称为 BCE.它是 Go 语言中防止数组.切片越界而导致内存不安全的检查手段.如果检查下标已经越界了,就会 ...
- Idea中JSP页面中out内置对象报错out.println标红问题
问题如图: 解决方法: 导入jar包 1.在pom.xml的<dependencies>里面复制 <dependency> <groupId>javax.servl ...
- HelloWorldMBean
package mbeanTest; public interface HelloWorldMBean { public String getHello(); public void setHello ...
- OC简单介绍
一.OC与C的对比 关键字 OC新增的关键字在使用时,注意部分关键字以"@"开头 方法->函数 定义与实现 数据类型 新增:BOOL/NSObject/id/SEL/bloc ...
- 石墨文档Websocket百万长连接技术实践
引言 在石墨文档的部分业务中,例如文档分享.评论.幻灯片演示和文档表格跟随等场景,涉及到多客户端数据同步和服务端批量数据推送的需求,一般的 HTTP 协议无法满足服务端主动 Push 数据的场景,因此 ...