cocos2d-x 工程中應用 protocol buffers

原創文章,轉載請註明出處
關於google推出的protocol buffers,這裏就不多介紹了,主要是我瞭解也不多。本文主要從實用角度來說一下,它在cocos2d-x工程裏的搭建和應用。


第一步,下載安裝:


在 https://code.google.com/p/protobuf/downloads/list 這裏下載最新的SourceCode工程, 我用的是2.5.0版本,下載完解壓下指定目錄下。
cd yourDir
./configure
make
make check
sudo make install


其中,./configure, 可能遇到的問題有(其中就是我遇到的問題),
a. gcc不存在,原因可能是沒有安裝Xcode
b. gcc 命令可用了, 但出現"C compiler is in use.....no"(類似這麼一個提示),查看config.log, 會提示 crt1.10.6.o 鏈接時這個文件找不到, 解決方式是鏈接了一個過去
c. “stdio.h” 文件找不到
以上三個原因, 最好的方式都是:Xcode->Preferences->Downloads下的Components下,選擇安裝Command Line Tools

安裝好之後, 再依次執行上面三條命令,安裝完成


第二步,把.proto配置文件,編譯成多種代碼文件

ProtocolLogic.proto文件

package lm;
message helloworld
{
		required int32	age = 1;
		required string name = 2;
		optional string	phone = 3;
}

編譯及拷貝到工程目錄下

protoc -I=./ --cpp_out=./code_out ProtocolLogic.proto
cp ./code_out/ProtocolLogic.pb.cc ~/*****/ProtocolLogic.pb.cpp
cp ./code_out/ProtocolLogic.pb.h ~/*****/ProtocBuffers/

第三步, 在工程中編譯這些文件
這一步有點小複雜
a. 把解壓完的目錄下 protobuf-2.5.0/src/google整個目錄拷貝到cocos2d-x工程下的libs目錄下。
b. 把解壓完的目錄下 config.h 拷貝到 libs/google 目錄下,主要是放到一些宏定義, 沒辦法,代碼被引用了。
c. 刪除編譯多語言相關文件,google/protobuf/compiler 目錄是用來編譯多語言的,刪除
d. 刪除單元測試文件 所有 ***unittest.cc 文件是測試用例(根據文件名猜的),刪除, 還有兩個tesst打着的文件夾
e. 刪除其它文件,編譯過程中還有一兩處錯誤,刪除相應.cc文件


Ok 編譯運行成功。


開發過程中,有時需要把序列化後的數據,結構化地顯示出來方便查錯。兩種方法:

一、

    CCLog(">>>>>>>>>>>>>>>>>>>%s", l_totalResponse.DebugString().c_str());

二、

    string l_stringContent;
    google::protobuf::TextFormat::PrintToString(l_totalResponse, &l_stringContent);
    CCLog(">>>>>>>>>>>>>>>>>>>%s", l_stringContent.c_str());


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