在网上找了很多例子,都没有一步成功的,这是我自己总结出来的方法,希望能帮助更多的新手
1 win7系统,工具vs
2.所需文件 protobuf-2.5.0.tar.gz,protoc-2.5.0-win32.zip ,自己在网上找下载地扯
http://download.csdn.net/download/px_dn/7414673 //protobuf-2.5.0.tar.gz 下载
http://download.csdn.net/download/hiz1990/9512182 //protoc-2.5.0-win32.zip
这里不多说废话,默认你已下载好,
找到你解压好的目录下,找到proto.exe,并把它的目录加到windows环境变量里;如图
这里放的是你自己的proto.exe文件所在目录,
并新加一条路径proto_path,值E:\zhuxueyong\tools\protoc-2.5.0-win32 (2) ,这里路径根据你所解压所在的目录!如图
定义protobuf 消息 后缀为.proto文件
如我的
接下来打开cmd窗口,输入命令执行 如
protoc -I =E:\zhuxueyong\code --cpp_out=E:\zhuxueyong\code E:\zhuxueyong\code\myproto.proto //生成.h和.cc文件
一般是不会出错,这步有问题可以看看自己的环境变量有没有填好!如图
这段命令执行成功后,会在对应的.proto文件目录生成对应的.h和.cc文件,这是我们工程要用的文件
自己去网上找这段命令的大意。
=================================================================
重要的步骤,也是比较坑的步骤用vs编译生成protocol buffer动态库。
找到protobuf-2.5.0下的vsprojects目录下的protobuf.sln 文件并用vs打开,
打开之后会有9个项目,选择编译
当编译生成动态库时出现min找不到标识符,max找不到标识符时,选中到提示文件中,在上面添加#include <algorithm>头文件清空再次编译,这时还有一些其它错误时,不用管它,能生成我们需要的动态库,libprotobuf.lib 和libprotoc.lib 文件,没有找到时来debug文件下找,可以根据你生成的版本来找对应的动态库。你也可以单独编译这俩个工程,生成对应的lib文件就好!
最后我们可以测试写代码了。
用vs建工程,不用多说。并把生成的.h和.cc文件拷贝到工程目录下和在工程中添加这俩个文件
最后就是把动态库文件,.h 和.cc文件的路径加到vs中,
把.h和.cc复制到当前目录下,并在vs上添加现有项,加进来
运态库文件是指编译好的libprotobuf.lib 和libprotoc.lib,有俩步,
1.在项目属性中,打开c/c++ -> 常规 -> 附加包含目录 - > 编辑, 把这俩个lib 文件所在的目录加进来
2.链接器 -> 附加库目录 -> 编辑 - > 同样把这俩个库文件所在目录加进来
现在总算到了写代码的时候了,如
#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讲的比较好的文章blog
http://www.cnblogs.com/stephen-liu74/archive/2013/01/04/2842533.html