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