Google protobuf :windows下环境配置

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在Git上的地址是:https://github.com/google/protobuf.git, 你可以clone源码然后按照ReadMe文件自己编译。

获取Release版本的地址是:https://github.com/google/protobuf/releases 你可以从这个地址下载你所需要的安装包,注意使用C++编程的话下载cpp的包,其他语言对应选择,本文介绍了windows下安装和使用ProtoBuf.



然后解压:我本地的路径是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.liblibprotobuf-lite.liblibprotoc.lib,将proto-2.6.1-win32.zip解压到D:\protobuf-2.6.1\vsprojects\Debug目录下,发现会有protoc.exe.


2.D:\protobuf-2.6.1\examples本来是有例子的,我们亲自实践下,动手自己在此目录下定义一个proto:

[plain]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. package tutorial;  
  2.   
  3. message Person {  
  4.   required string name = 1;  
  5.   required int32 age = 2;  
  6.   optional string email = 3;  
  7.   
  8. }  

然后使用cmd运行protoc.exe生成我们的目标语言格式(c++).步骤如下:

运行终端cmd

cd D:

cd D:\protobuf-2.6.1\vsprojects\Debug

D:

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

然后在D:\protobuf-2.6.1\examples可以看到,生成了person.pb.hperson.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复制到项目里面,并添加到项目里面。

[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #include <iostream>  
  2. #include "person.pb.h"  
  3.   
  4. using namespace std;  
  5. using namespace tutorial;  
  6.   
  7. int main()  
  8. {  
  9.     Person person;  
  10.   
  11.     person.set_name("flamingo");     
  12.     person.set_age(18);     
  13.   
  14.     cout<<person.name()<<endl;  
  15.     cout<<person.age()<<endl;  
  16.   
  17.   
  18.     system("pause");  
  19.     return 0;  
  20. }  


有些人说可以正常运行,但是我这边不行,主要是


网上查找原因,终于发现,需要在代码里面加两行:


[cpp]  view plain  copy
  在CODE上查看代码片 派生到我的代码片
  1. #pragma comment(lib, "libprotobuf.lib")  
  2. #pragma comment(lib, "libprotoc.lib")  


就能正常跑了:





配置属性  -> C/C++ -> 预处理器 -> 预处理器定义加 :_SCL_SECURE_NO_WARNING

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值