1、从这里下载protobuf-2.6.1.tar.gz到桌面,并解压,解压后的文件夹为protobuf-2.6.1。(我的桌面为C:\Users\mcl\Desktop)

2 、进入文件夹protobuf-2.6.1\vsprojects\,用vs2010打开其中的sln文件,然后生成解决方案(然后这个vs就可以关闭了)。 之后在protobuf-2.6.1\vsprojects\Debug下会有一个protoc.exe,并且还有一些其他的lib文件等。

3、在你vc的lib文件夹下新建一个google文件夹,然后将protobuf-2.6.1\vsprojects\Debug下的全部文件都拷贝进去。

4、将C:\Users\mcl\Desktop\protobuf-2.6.1\src文件夹下的google文件夹拷贝到vs的include文件夹下。

5、新建一个vs工程,比如我在桌面上新建了一个GoogleProtoStudy的工程,然后将protobuf-2.6.1\examples下面的Makefile文件拷贝到GoogleProtoStudy\GoogleProtoStudy下(注意这个文件夹下应该有有vcxproj,filters等文件)。这个时候那个protobuf-2.6.1的文件夹可以全部删掉了。

6、接着在GoogleProtoStudy\GoogleProtoStudy文件夹下新建一个person.proto的文件,内容如下:

package tutorial;

message Person {
optional string dim=1;
repeated int32 num=2;
} message Student{
optional Person p=1;
}

  

7、在工程的属性->配置属性->链接器->输入,在右侧的“附加依赖项”中输入libprotobuf.lib,libprotoc.lib(注意分两行,每行一个)。然后在属性->配置属性->链接器->常规,在右侧的“附加库目录”中加入刚才vc目录下lib下那个google文件夹的路径,比如我的是"D:\vs2010\VC\lib\google"。

8、然后新建一个main.cpp,在其中写上如下代码:(注意把所有的目录改成你相关的目录)。然后运行,就会把刚才的person.proto编译成一个.h文件和一个.cpp文件。

#include <iostream>
#include <string> using namespace std; void trans()
{
std::string S="D:\\vs2010\\VC\\lib\\google\\protoc.exe \
-I=C:\\Users\\mcl\\Desktop\\GoogleProtoStudy\\GoogleProtoStudy \
--cpp_out=C:\\Users\\mcl\\Desktop\\GoogleProtoStudy\\GoogleProtoStudy \
C:\\Users\\mcl\\Desktop\\GoogleProtoStudy\\GoogleProtoStudy\\person.proto";
system(S.c_str());
} int main()
{
trans(); system("pause"); return 0;
}

  

9、把刚才生成的文件加入到工程中,就可以使用了。

#include <iostream>
#include <string>
#include "person.pb.h" using namespace std;
using namespace tutorial; void trans()
{
std::string S="D:\\vs2010\\VC\\lib\\google\\protoc.exe \
-I=C:\\Users\\mcl\\Desktop\\GoogleProtoStudy\\GoogleProtoStudy \
--cpp_out=C:\\Users\\mcl\\Desktop\\GoogleProtoStudy\\GoogleProtoStudy \
C:\\Users\\mcl\\Desktop\\GoogleProtoStudy\\GoogleProtoStudy\\person.proto";
system(S.c_str());
} int main()
{
//trans(); Person a;
a.add_num(1);
a.add_num(4);
a.add_num(5);
a.set_dim("hello world"); for(int i=0;i<a.num_size();i++) cout<<a.num(i)<<endl; //输出1 4 5
cout<<a.dim()<<endl; //输出 hello world Student b;
b.set_allocated_p(&a); Person* A=b.mutable_p();
cout<<A->dim()<<endl; //输出 hello world system("pause");
return 0;
}

  

Google Protocol Buffer在vs2010下配置的更多相关文章

  1. Google protocol buffer在windows下的编译

    在caffe框架中,使用的数据格式是google的 protocol buffer.对这个不了解,所以,想简单学习一下.简单来说,Protocol Buffer 是一种轻便高效的结构化数据存储格式,可 ...

  2. Google protocol buffer的配置和使用(Linux&&Windows)

    最近自己的服务器做到序列化这一步了,在网上看了下,序列化的工具有boost 和google的protocol buffer, protocol buffer的效率和使用程度更高效一些,就自己琢磨下把他 ...

  3. Google Protocol Buffer安装编译及使用

    近期玩了玩谷歌的Protocol Buffer.以下就简介下 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准.眼下已经正在使用的 ...

  4. 前端后台以及游戏中使用Google Protocol Buffer详解

    前端后台以及游戏中使用Google Protocol Buffer详解 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更 ...

  5. Google Protocol Buffer 的使用和原理[转]

    本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...

  6. Google Protocol Buffer 的使用

    简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...

  7. 学习Google Protocol buffer之概述

    XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的.致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈.这种对于实时性很强的应用来说,就不太适合了,想象下 ...

  8. Google Protocol Buffer 简单介绍

    以下内容主要整理自官方文档. 为什么使用 Protocol Buffers .proto文件 Protocol Buffers 语法 编译.proto文件 Protocol Buffers API 枚 ...

  9. Google Protocol Buffer 的使用和原理

    Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...

随机推荐

  1. python入门第一篇

    python里面 单行注释用:#被注释内容 多行注释用:"""被注释内容""" 要想py2.7和py3.5都能运行,必须在文件头部加: #/ ...

  2. ssh简单入门级案例教程

    准备工作:struts2.3.34+spring4.2.2+hibernate3.3.2 导入需要的开发包: struts开发包---注意:javassist-3.18.1-GA.jar包与hiber ...

  3. Cassandra创建第一个用户

    Cassandra配置文件cassandra.yaml 的配置项, 默认是 authenticator: AllowAllAuthenticator 现在想创建Cassandra的用户,但是如果保持以 ...

  4. Lua之math

    Lua之math函数: 转载请注明出处:http://www.cnblogs.com/jietian331/p/8032555.html abs 取绝对值 math.abs(-15) 15 acos ...

  5. awk命令学习(1)

    awk是一个强大的文本分析工具,相对于grep的查找,sed的编辑,awk在其对数据分析并生成报告时,显得尤为强大.简单来说awk就是把文件逐行的读入,以空格为默认分隔符将每行切片,切开的部分再进行各 ...

  6. 转:C#清除回收站

    SHEmptyRecycleBin是一个内核API方法,该方法能够清空回收站中的文件,该方法在C#中需要手动的引入方法所在的类库.该方法在C#中的声明语法如下: [DllImportAttrbute( ...

  7. docker rmi 导致后面的命令不执行问题 Dockerfile设置时区问题

    docker rmi 导致后面的命令不执行问题 把ca=`docker rmi sendemail-service` echo $ca改成docker rmi sendemail-service -f ...

  8. source from Other`s

    以下链接转自其他努力的程序员们: 一一感谢! http完美讲解 -- https://www.cnblogs.com/ranyonsue/p/5984001.html http协议与soap协议之间的 ...

  9. vue中组件通信之父子通信:props(组件传参)

    实例一: <div id="app"> <alert msg="hhhhhhh"></alert> </div> ...

  10. Django框架----Form组件

    Form介绍 我们之前在HTML页面中利用form表单向后端提交数据时,都会写一些获取用户输入的标签并且用form标签把它们包起来. 与此同时我们在好多场景下都需要对用户的输入做校验,比如校验用户是否 ...