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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章