Protobuf V3.1 Windows VS2012编译与使用

Protobuf V3.1 Windows VS2012编译与使用


本教程针对使用VC++的用户。

1.准备环境:

Windows7 以上的电脑

Visual studio2012 以上,protobuf 3.x后支持语法为C++11

2.工程准备:

1.protobuf:

官方地址:https://github.com/google/protobuf/tags


2.gmock:根据ReadMe要求选择1.7

官方地址:https://github.com/google/googlemock/tags


3.gtest:根据ReadMe要求选择1.7

官方地址:https://github.com/google/googletest/tags


4.cmake

官方地址:https://cmake.org/

=========================================下载后需要将文件按照以下位置进行放置:protobuf->gmock->gtest




========================Cmake生成工程:

生成前准备:

修改VS下的配置文件:

C:\Program Files (x86)\Microsoft Visual Studio 11.0\VC\include\xstddef

修改:


文件时只读类型,先修改属吧


最后用Cmake:



=======================================VS工程编译成功。

还是继续说说这两天使用中出现的问题,和大家关心的Json吧?可能大家并不关心!

1.已知bug[可能不是bug,但需要求证就写了出来]:


环境:win7 运行库 MT Release VS2012

报错:在SharedDtor 释放部分进行报错,于是看到了我对象的申明方式是栈区中申明的:


函数结束后报错。于是索性就改成堆区并手动delete(当然C++11 是可以用智能指针,经过验证也没有问题)

2.大家关心的Json序列化问题

#include <google/protobuf/util/json_util.h>

void main()
{
  // LiveUpdateData PB生成的类
  std::shared_ptr< LiveUpdateData > ptr( new LiveUpdateData() );
  std::string json;
 // 执行这句后就会生成json,不知道为什么。官方在序列化时间:如2016年12月12日的时候,会去掉年月日变成:20161212
 MessageToJsonString(*ptr, &json);
}

另外给出已经编译好了的C++ VS2012的库,使用的时候请注意把运行时Debug改成MTD,Relase改成MTD。如需更多请按照自己的需求编译吧!!

下载地址:http://download.csdn.net/detail/zouwei678/9707765


  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值