• 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.1vsprojects,用vs2012运行protobuf.sln,然后build solution。

    这些大家都会,我就不罗嗦了。

    然后你就会发现,D:protobuf-2.6.1vsprojectsDebug目录下出现了很多内容,最重要的几个就是:libprotobuf.lib,libprotobuf-lite.lib,libprotoc.lib和protoc.exe

    2.D:protobuf-2.6.1examples本来是有例子的,我们亲自实践下,动手自己在此目录下定义一个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.1vsprojectsDebug

    D:protobuf-2.6.1vsprojectsDebug>protoc -I=D:protobuf-2.6.1examples --cpp_out=D:protobuf-2.6.1examples D:protobuf-2.6.1examplesperson.proto

    然后可以看到,生成了person.pb.h和person.pb.cc的文件。

    3.我们用vs2012新建一个空的项目,选择属性,配置一下:

    点击 配置属性 下的 C/C++ 的 常规,右边附加包含目录,导入这个路径D:protobuf-2.6.1src

    点击链接器 的常规,右边的附加库目录,导入这个路径D:protobuf-2.6.1vsprojectsDebug

    三.开始一个最简单的项目

    好了,一切配置好了,该写代码了,我们做一个最简单的输入输出。新建一个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

  • 相关阅读:
    Python 模块,数据类型,元组
    Python条件循环判断
    Python简介
    File对象的基本操作学习
    File对象的基本操作学习
    sublime学习心得
    sublime学习心得
    IO学习
    IO学习
    Emacs学习
  • 原文地址:https://www.cnblogs.com/wynn518/p/8490376.html
Copyright © 2020-2023  润新知