Google Protocol Buffers淺析(二)

網上的教程還是和實際操作有很多區別,在這裏把遇到的幾個問題分享一下。

1.按照全部步驟完成以後, 如果用Visual Studio 2012編譯,會報一個 

error C4996: 'std::_Copy_impl': Function call with parameters that may be unsafe - this call relies on the caller to check that the passed values are correct. To disable this warning, use -D_SCL_SECURE_NO_WARNINGS. See documentation on how to use Visual C++ 'Checked Iterators'

的錯誤,原因不解釋了,其實是我自己查了以後也沒看太明白,解決方法是在"stdafx.h"文件中加入下面這句define就可以了

#define _SCL_SECURE_NO_WARNINGS

2)編譯通過以後鏈接的時候,會報以下的錯誤一堆

error LNK2038: 檢測到“_ITERATOR_DEBUG_LEVEL”的不匹配項: 值“2”不匹配值“0”
檢測到“RuntimeLibrary”的不匹配項: 值“MDd_DynamicDebug”不匹配值“MT_StaticRelease”

導致的原因,按照 1-3 步驟編譯出的release版本的lib,在PBTest工程的debug模式下形成了調用release模式編譯出的lib文件的問題。

另外2-7步驟選擇的Runtime Library也要相同。

----------------------------- 我是華麗的分割線-----------------------

本文開始將逐漸介紹怎麼使用protocol buffers來完成序列化與反序列化數據的應用,開發環境爲VS2008,語言爲C++,外部庫用的是googlebuffer庫。

1、Google Protocol Buffer庫

1)進入網址 https://code.google.com/p/protobuf/downloads/list 下載最新版本Protocol Buffers full source

2)下載解壓後進入vsprojects文件夾打開protobuf.sln, 高版本的Visual Studio會轉換, 無視, 直接確定完成.

3)右鍵分別生成libprotobuflibprotobuf-litelibprotocprotoc這四個工程(編譯模式爲Release 模式)

4編譯完成後,可以在vsprojects\Release下發現3個lib和一個exe文件,他們分別是

libprotobuf.liblibprotobuf-lite.liblibprotoc.libprotoc.exe :

5)將以上文件複製到GoogleProtocolBuffer/lib目錄中,將下載文件夾中的src/google文件複製到

GoogleProtocolBuffer/include目錄中.

2、建立並正確設置項目  

      1)將步驟1中的GoogleProtocolBuffer文件夾拷貝到你的項目工程裏,如下圖所示:


2)使用編譯器將定義的proto文件編譯成.h與.cc文件,拷貝到項目工程目錄下,如下圖所示:

3)在項目中將.h與.cc文件引用進來,並在addressbook.pb.cc頭部加上一句include "stdafx.h",否則編譯時會報錯


4)打開項目屬性,右鍵項目->Configuration(配置屬性)->C/C++ -》General(常規) ,設置Additional Include Directories(附加包含目錄),如下所示:


5)定位到Configuration(配置屬性) -> Linker(l鏈接器) -> General(常規), 設置Additional Library Directories(附加庫目錄),如下所示


6)定位到Configuration(配置屬性) -> Linker(l鏈接器) -> Input(輸入) -> Additional Dependencies(附加依賴項),如下圖所示:

7)定位到Configuration(配置屬性) -> C/C++-> Code Generation,修改Runtime Library項爲Multi-threaded(/MT),如下圖所示:    通過上述的一些列項目屬性設置,程序可以正確編譯通過了,但是什麼功能都沒有,下篇文章中將介紹怎麼序列化與反序列化我們的數據。

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