Menu

Pb in COCOS2DX

关于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());  

Categories:   Garfield's Diary

Comments