我已经试验过,不过protobuf 源码不是在谷歌下载的。网上说下载不能下载了,一个好心网友的网盘里下载的ios
欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45371743c++
protobuf的使用和原理,请查看:http://blog.csdn.net/majianfei1023/article/details/45112415windows
Windows下google protobuf开发环境配置网络
最近项目需求,Client与Server的网络通讯协议传输使用google protobuf rpc。对于Protobuf,之前是只知道有这个东西,知道它干吗,并且一直很仰慕,可是历来没学习过,最近恰好趁着项目机会,好好学习学习。
工具
这篇主要讲,在windows下用vs2012配置google protobuf开发环境。
一.准备工做:学习
1.Windows7或其余Windows系统.ui
2.Visual Studio 2012或其余版本VS.google
3.protobuf:我使用的是最新版本的protobuf(protobuf-2.6.1)。spa
windows下,须要下载两个包:.net
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")