Google Protocol Buffer在vs2010下配置
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下配置的更多相关文章
- Google protocol buffer在windows下的编译
在caffe框架中,使用的数据格式是google的 protocol buffer.对这个不了解,所以,想简单学习一下.简单来说,Protocol Buffer 是一种轻便高效的结构化数据存储格式,可 ...
- Google protocol buffer的配置和使用(Linux&&Windows)
最近自己的服务器做到序列化这一步了,在网上看了下,序列化的工具有boost 和google的protocol buffer, protocol buffer的效率和使用程度更高效一些,就自己琢磨下把他 ...
- Google Protocol Buffer安装编译及使用
近期玩了玩谷歌的Protocol Buffer.以下就简介下 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准.眼下已经正在使用的 ...
- 前端后台以及游戏中使用Google Protocol Buffer详解
前端后台以及游戏中使用Google Protocol Buffer详解 0.什么是protoBuf protoBuf是一种灵活高效的独立于语言平台的结构化数据表示方法,与XML相比,protoBuf更 ...
- Google Protocol Buffer 的使用和原理[转]
本文转自: http://www.ibm.com/developerworks/cn/linux/l-cn-gpb/ Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构 ...
- Google Protocol Buffer 的使用
简介 Google Protocol Buffer( 简称 Protobuf) 是 Google 公司内部的混合语言数据标准,目前已经正在使用的有超过 48,162 种报文格式定义和超过 12,183 ...
- 学习Google Protocol buffer之概述
XML这种属于非常强大的一种格式,能存储任何你想存的数据,而且编辑起来还是比较方便的.致命的缺陷在于比较庞大,在某些情况下,序列化和解析都会成为瓶颈.这种对于实时性很强的应用来说,就不太适合了,想象下 ...
- Google Protocol Buffer 简单介绍
以下内容主要整理自官方文档. 为什么使用 Protocol Buffers .proto文件 Protocol Buffers 语法 编译.proto文件 Protocol Buffers API 枚 ...
- Google Protocol Buffer 的使用和原理
Google Protocol Buffer 的使用和原理 Protocol Buffers 是一种轻便高效的结构化数据存储格式,可以用于结构化数据串行化,很适合做数据存储或 RPC 数据交换格式.它 ...
随机推荐
- js的基本包装类型
基本包装类型(包装对象): 先看下以下代码: var s1 = "helloworld"; var s2 = s1.substr(4); 上面我们说到字符串是基本数据类型,不应该有 ...
- react-demo
实现博客动态的评论.动态的点赞.评论的删除. 百度云链接:https://pan.baidu.com/s/199l3iu0qhM6qSe9CBnHFzw 提取码:n4w6
- 参考termux中包管理命令的伪装修改的arch版包管理命令
#!/bin/bash set -e -u show_help() { echo "This help message is useless, please read the content ...
- 11.match
(我对部分段落进行翻译) A match statement is used to branch execution of a program. It’s the equivalent of the ...
- [转]js刷新父窗体
浮层内嵌iframe及frame集合窗口,刷新父页面的多种方法 <script language=JavaScript> parent.location.reload(); ...
- Sitecore CMS中查看标准字段
什么是标准字段? 标准字段是字段及其字段组的集合,用于包含有关Sitecore中项目的可配置元数据.Sitecore中继承自“标准模板”模板的任何项目都将包含这些字段. 可以在“标准模板”模板项找到/ ...
- 【转】robot framework + python实现http接口自动化测试框架
前言 下周即将展开一个http接口测试的需求,刚刚完成的java类接口测试工作中,由于之前犯懒,没有提前搭建好自动化回归测试框架,以至于后期rd每修改一个bug,经常导致之前没有问题的case又产生了 ...
- 【2017-03-10】T-sql基础语句及条件,高级查询
一.T-sql基础语句 1.创建数据库:create database 数据库名 (不能中文,不能数字开头,不能符号开头) 2.删除数据库:drop database 数据库名 3.选择数据库:us ...
- 【Error】:svnrdump: E130003: The XML response contains invalid XML
我这边的使用场景是在对远程服务器进行svnrdump dump操作时出现该问题,因为是对远程仓库多级子目录进行备份,结果出现错误. 在网上搜索了很多,有很多帖子是在checkout的时候出现问题,和我 ...
- max virtual memory areas vm.max_map_count [65530] is too low, increase to at least [262144]
elasticsearch启动时遇到的错误 问题翻译过来就是:elasticsearch用户拥有的内存权限太小,至少需要262144: 解决: 切换到root用户 执行命令: sysctl -w vm ...