VS2013+protobuf-2.5.0 編譯源碼,嵌入新工程,使用google protobuf數據格式協議


1、下載兩個壓縮包,protobuf-2.5.0.tar.gz , protobuf-2.5.0-win32.zip (壓縮包已經上傳,可以通過我的名字去查找看看)



2、解壓protobuf-2.5.0-win32.zip,把protoc.exe丟到C盤的windows 目錄下


3、解壓protobuf-2.5.0.tar.gz,進入vsprojects目錄(如果你找不到,說明你的版本問題,重新下載吧)


4、在vsprojects目錄下會找到extract_include.bat批處理文件,直接雙擊運行,會在本目錄下生成一個include文件夾


5、在vsprojects目錄下找到後綴是sln的文件,用VS打開這個文件。


6、打開之後你會發現有9個工程,我們只需要關心libprotobuf,libprotobuf-lite ,libprotoc 這三個工程,我們需要得到對應的三個lib


7、打開libprotobuf工程下的Source Files文件夾,找到zero_copy_stream_impl_lite.cc,打開它,在最前面加上一個頭文件#include <algorithm>,保存關閉


8、打開libprotobuf工程下的Head Files文件夾,找到repeated_field.h,打開它,用ctrl+f找關鍵詞internal. 找到


namespace internal {

template <typename Element, bool HasTrivialCopy>


void ElementCopier<Element, HasTrivialCopy>::operator()(
Element to[], const Element from[], int array_size) 
{
  
std::copy(from, from + array_size, to);

}

    }


這個整體,然後把std::copy(from, from + array_size, to);隱掉,
替換成std::copy(from,from+array_size,stdext::checked_array_iterator<Element*>(to,array_size));






9、在libprotobuf上點擊右鍵,選擇 僅用於項目->僅重新生成libprotobuf.  這時候會單獨編譯這個工程,會生成lib文件在Debug目錄下。




10、在libprotobuf-lite上點擊右鍵,選擇 僅用於項目->僅重新生成libprotobuf-lite 這時候會單獨編譯這個工程,會生成lib文件在Debug目錄下。


11、在libprotoc 上點擊右鍵,選擇 僅用於項目->僅重新生成libprotobuf-lite 這時候會單獨編譯這個工程,會生成lib文件在Debug目錄下。




//------------------------上面的操作最後得到了三個lib文件,很重要---------------------------------//



12、創建一個console的C++工程,直接編譯沒錯就行。我要的就是一個空的或者帶着main的工程。


13、進入剛創建的工程目錄,也就是後綴是sln的文件所在的這個位置,在這個目錄下創建一個lib空文件夾,一個空的src文件夾


14、把剛纔生成的三個lib文件拷貝到這裏的lib下


15、去protobuf解壓所在的目錄,找到src文件夾,把裏面的google文件夾全部拷貝到新創建的工程的src文件夾下。


16、在新創建的工程的sln所在的目錄的位置,新建一個文件,person.proto,文件內容就是你要自定義的數據協議

message Person {
  required int32 id = 1;
  required string name = 2;
  optional string email = 3;
}

這就是文件的內容。


17、去protobuf解壓所在的目錄,找到我之前說的extract_include.bat批處理文件,把這個文件放到後綴名爲vcxproj文件所在的目錄下


18、雙擊運行extract_include.bat,當前目錄下會有include文件夾,就對了。

19、去新創建的工程的後綴名sln所在的目錄下,新建一個build.bat文件,內容爲protoc --cpp_out=./ Person.proto,保存關閉。

20、直接雙擊build.bat,當前目錄下回生成Person.pb.cc ,Person.pb.h兩個文件。


//-----------上面主要是移植---------------------//




21、打開新工程,如果已將打開,就不用操作了。


22、添加頭文件Person.pb.h,添加源文件Person.pb.cc


23、主程序頭部,添加#include "Person.pb.h"

24、點擊工程名字,右鍵選擇屬性->VC++目錄->包含目錄  這裏添加兩個目錄,一個是新工程生成的include所在的路徑,一個是Person.pb.h所在
的路徑


25、點擊工程名字,右鍵選擇屬性->鏈接器->常規  在附加庫目錄這,選擇新工程的lib文件夾得路徑


26、點擊工程名字,右鍵選擇屬性->鏈接器->輸入  在附加依賴項,添加libprotobuf.lib ,libprotobuf-lite.lib ,libprotoc.lib
這三個lib文件,也是我們前面生成的lib文件,已經拷貝到了新工程的lib文件夾下。


//--------------一切準備就緒,可以開始寫代碼使用了---------------------------//




我所說的,全都是針對我所上傳的兩個壓縮包,其他的我不敢保證哦。











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