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