欢迎转载,转载请注明原文地址: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

最新文章

  1. centos6升级python2.7
  2. Linux文件目录权限总结
  3. Web开发的常见面试题HTML和HTML5等
  4. Rmarkdown用法与R语言动态报告
  5. hadoop1.X安装
  6. oracle 优化——索引与组合索引
  7. function overloading/ declare function
  8. Dima and Salad(完全背包)
  9. python 使用xrld
  10. Java学习之equals和==的区别
  11. Android该HTTP下载
  12. 测试驱动 ASP.NET MVC Type Aliase
  13. java知识点梳理
  14. HTML里为什么不能在&lt;p&gt;标签中嵌套&lt;div&gt;标签
  15. iOS开发之清除缓存
  16. 2017CUIT校赛-线上赛
  17. FLP不可能性(FLP impossibility)
  18. 深入研究Sphinx的底层原理和高级使用
  19. Python实现Singleton模式的几种方式
  20. Django组件-Forms组件

热门文章

  1. map与unordered_map区别及使用
  2. 36-Same Tree
  3. header 301,显示302
  4. ProxyApi-大数据采集用的IP代理池
  5. 基于 Helm 快速部署 Wordpress
  6. Linux 参数代换 命令 xargs
  7. A Child&#39;s History of England.44
  8. 求最长子序列(非连续)的STL方法 - 洛谷P1020 [NOIP1999 普及组] 导弹拦截
  9. MyBatis中sql实现时间查询的方法
  10. Linux系统分区及挂载点