protobuf简单序列化反序列化示例

protoc命令格式 

protoc    -I=SRC -cpp_out = DRC SRC\*.proto 

SRC:源路径;

DRC:目的路径;

当出现下面无法打开文件错误时,应在工程属性目录下的包含目录文件中添加工程所在路径 D:\!exercise\c++\protob1\protob1\

错误 1 error C1083: 无法打开包括文件:“google/protobuf/stubs/common.h”: No such file or directory d:\!exercise\c++\protob1\protob1\google\protobuf\generated_message_util.h 43 1 protob1

当现现下面无法打开库文件时,应用工程属性目录下的库目录添加LIB文件所在路径:D:\!software\!develop\protobuf-2.5.0\protobuf-2.5.0\vsprojects\Debug

错误 3 error LNK1104: 无法打开文件“libprotoc.lib” D:\!exercise\c++\protob1\protob1\LINK protob1

附:源代码

 1 #include "iostream"
 2 #include "person.pb.h"
 3 #include "fstream"
 4
 5 using namespace std;
 6 #pragma comment(lib,"libprotoc.lib")
 7 #pragma comment(lib,"libprotobuf.lib")
 8 #pragma comment(lib,"libprotobuf-lite.lib")
 9 int main()
10 {
11     lm::helloworld hw;
12     hw.set_id(11);
13     hw.set_str("str");
14
15     cout<<"id="<<hw.id()<<endl;
16     cout <<"str"<<hw.str()<<endl;
17
18      std::fstream out( "person.pb", std::ios::out | std::ios::binary | std::ios::trunc );
19     hw.SerializeToOstream( &out );
20     out.close();
21
22     lm::helloworld hw1;
23     std::fstream in( "person.pb", std::ios::in | std::ios::binary );
24     if ( !hw1.ParseFromIstream( &in ) ) {
25       std::cerr << "Failed to parse person.pb." << std::endl;
26       exit(1);
27     }
28
29     std::cout << "ID: " << hw1.id() << std::endl;
30     std::cout << "name: " << hw1.str() << std::endl;
31
32     google::protobuf::ShutdownProtobufLibrary();
33
34     system("pause");
35     return 0;
36 }
时间: 2024-10-13 08:35:51

protobuf简单序列化反序列化示例的相关文章

ProtoBuf 常用序列化/反序列化API 转

http://blog.csdn.net/sealyao/article/details/6940245 1.C数组的序列化和反序列化API [cpp] view plaincopy //C数组的序列化和序列化API bool ParseFromArray(const void* data, int size); bool SerializeToArray(void* data, int size) const; //使用 void set_people() { wp.set_name("sea

nodejs - json序列化&amp;反序列化示例

1 // demo-json.js 2 var obj = { 3 "name": "LiLi", 4 "age": 22, 5 "sex": "F" 6 }; 7 8 var str = JSON.stringify(obj); 9 console.log(str); 10 11 var obj2 = JSON.parse(str); 12 console.log(obj2); json序列化最终结果是字

java序列化/反序列化之xml、protobuf、protostuff 的比较与使用例子

目录 1.背景 2.测试 2.1.环境 2.2.工具 2.3.说明 2.4.结果 2.5.结论 3.xml简单教程 3.1.准备 3.2.代码 4.protobuf简单教程 4.1.快速入门 1.下载.exe编译器 2.编写.proto文件 3.利用编译器编译.proto文件生成javabean 4.引用jar包 5.直接使用javabean自带的序列化.反序列化.提取属性等方法 5.protostuff简单教程 5.1.快速入门 1.引用jar包 2.直接使用相关序列化.反序列化语法 1.背景

lua 对表的简单序列化与反序列化

参考文档:http://blog.csdn.net/xiaodan007/article/details/7096718 function sz_T2S(_t) local szRet = "{" function doT2S(_i, _v) if "number" == type(_i) then szRet = szRet .. "[" .. _i .. "] = " if "number" == ty

一个C#版的序列化/反序列化器-SharpSerialization

项目地址:https://sourceforge.net/projects/sharpserialization/ 我们的实际工作中经常会遇到跨语言的交互,如Java-C#-C++等,大部分情况下通过Xml.Json数据交换等协议可以很好的处理对象的交互,但有时我们希望数据流变得更小,性能变得更好,但同时又不想对现有程序做过多修改或者不想对每个协议对象编写特定的代码,这时,一个良好的二进制序列化器是自然的一个考虑,对于.Net语言间的交互,Framework自带的序列化器是自然也很好的选择,但当

springboot学习(三)——http序列化/反序列化之HttpMessageConverter

以下内容,如有问题,烦请指出,谢谢! 上一篇说掉了点内容,这里补上,那就是springmvc的http的序列化/反序列化,这里简单说下如何在springboot中使用这个功能. 使用过原生netty http的人可能对http序列化比较熟悉,springmvc中的意思跟netty中的意思一样.http序列化(或者叫作http报文编码),就是将Java类转化为二进制流输出给http body:http反序列化,就是将http报文转换为程序内部的Java类.有了http反序列化,就不用再去一个个re

protostuff序列化/反序列化

Protostuff是基于Google protobuff技术的Java版本,直接使用原生的protobuff是需要数据结构的预编译过程,需要编写.proto格式的配置文件,再通过protobuff提供的工具翻译成目标语言代码,而Protostuff动态支持了protobuff的预编译的过程,可以直接使用普通java POJO进行序列化,简化编码. 经过实测序列化性能相对原生protpbuff没有影响. 由于Protostuff只支持Java实现,不过并未对序列化格式有做任何修改,所以Proto

.NET序列化反序列化总结

一直想写这个专题,但是工作后人很懒散,总下不了决心,今天一个人在家就写下来. 关于序列化,可以总结出它的作用有以下几点: 1.记录应用程序的状态,在下次启动时还原上次的状态. 2.进程之间的通信,如使用socket编程时使用.这里的进程包括同一台主机之间进程的通信,也包括不同主机之间的通信. 3.作为对象的深拷贝的一种实现方式. .net中的序列化支持下面几种序列化机制: 1.使可序列化的类型序列化和反序列化 2.控制可序列化的类型的序列化/反序列化内容和过程 3.将类型序列化/反序列化为不同的

常用json序列化/反序列化技术对比测试

目前常用的json工具有:1.json-lib:2.jakson-mapper:3.fastjson. 下面对这三种工具的性能进行简单对比测试. 测试样本:一个126K的json文件,内容为json数组. 测试方法:反序列化,读取文件中的json转化为java对象. 测试代码如下: 1 @Test 2 public void testDeserialize() throws Exception { 3 String dealer = "d:\\auto\\json\\100016109.js&q