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. .NET 黑魔法 - asp.net core 配置文件的"对象存储"

    来,全都是干货. 我们都知道在Framework版本的mvc项目中,配置数据是通过web.config里的appSettings节点配置,我们不得不写一些读取配置文件字符串的类,比如保存在静态的变量中 ...

  2. hive中安装hive_utils模块

    1. 因为在linux部署的python 3.6 在安装模块的时候遇到了许多问题,所以使用linux中的python3.6环境 2. 首先使用pip安装 hive_utils 模块sudo pip i ...

  3. java一维数组作业

    package zuoYe; import java.util.Scanner; public class MaxSubArray { public static void main(String[] ...

  4. weblogic 乱码

    1.找到weblogic安装目录,当前项目配置的domain 2.找到bin下的setDomainEnv.cmd文件 3.打开文件,从文件最后搜索第一个set JAVA_OPTIONS=%JAVA_O ...

  5. Spring源码阅读(七)

    这一讲主要分析bean注册过程中各种初始化方法回调的执行逻辑(initializeBean) /** * Initialize the given bean instance, applying fa ...

  6. C# foreach 中获取索引index的方法[转]

    在C# 开发中往往使用foreach 循环语句 来代替for循环语句.foreach 比 for 更加简洁高效.           foreach :                 foreach ...

  7. hive中的with用法

    hive 可以通过with查询来提高查询性能,因为先通过with语法将数据查询到内存,然后后面其它查询可以直接使用,这种方法与创建临时表类似但是不需要创建临时表实体表,内存中的子查询结果在会话结束后会 ...

  8. Hive静态分区和动态分区

    一.静态分区 1.创建分区表 hive (default)> create table order_mulit_partition( > order_number string, > ...

  9. .NET 常用ORM之Gentle.Net

    .Net常用的就是微软的EF框架和Nhibernate,这两个框架用的都比较多就不做详细介绍了,今天我们来看看Gentle.Net,Gentle.Net是一个开源的优秀O/R Mapping的对象持久 ...

  10. Android屏幕适配全攻略(最权威的官方适配指导)

    摘自:http://www.cocoachina.com/android/20151030/13971.html Android屏幕适配出现的原因 在我们学习如何进行屏幕适配之前,我们需要先了解下为什 ...