在cocos2dx中应用protobuf
来源:互联网 发布:c语言1到100偶数的和 编辑:程序博客网 时间:2024/05/16 19:30
protobuf在各个平台下编译好痛苦!!! 各种失败!! 经过两天的努力终于成功了!!!所以有必要记录下,以方便会他人会用到(网上查阅了很多资料, 很是感激那些作者)
去https://code.google.com/p/protobuf/downloads/list下载版本protobuf-2.5.0.tar.bz2, 然后解压 如图
为了解决ios平台下可能的名字空间冲突, 切换到src/google/protobuf下,运行下面的命令
sed -i '' -e 's/namespace\ google /namespace\ google_public /g' $(find . -name \*.h -type f)sed -i '' -e 's/namespace\ google /namespace\ google_public /g' $(find . -name \*.cc -type f)sed -i '' -e 's/namespace\ google /namespace\ google_public /g' $(find . -name \*.proto -type f)sed -i '' -e 's/google::protobuf/google_public::protobuf/g' $(find . -name \*.h -type f)sed -i '' -e 's/google::protobuf/google_public::protobuf/g' $(find . -name \*.cc -type f)sed -i '' -e 's/google::protobuf/google_public::protobuf/g' $(find . -name \*.proto -type f)
新建一个cocos2dx工程以后测试用。
在cocos2dx工程的Classes目录中新建目录pb, protobuf_base。 pb用来放proto转换后的.cc和.h文件; protobuf_base目录下放置protobuf必须的头文件及各平台下的库文件。按如下截图建立各个目录
下面一步步来编译各个环境
1. Windows下 直接打开vsprojects下的protobuf工程文件, 有些vs版本可能会提示对项目方案的一些更改,点击确定。
然后右键protobuf, 生成, 之间可能会有些错误, 不用管,是一些google的测试文件,无视之!
在debug目录下会生成4个重要的文件protoc.exe,libprotobuf.lib, libprotobuf-lite.lib,libprotoc.lib
其中protoc.exe是用来生成.h和.cc文件的。 将这4个文件拷贝到Classes/protobuf_base/lib/win32下。
2.Android下的编译
将下载好的protobuf源码拷贝一份到cocos2dx工程的Classes目录中, 重新命名为protobufxx(临时编译Android用, 编译好后将会删除)
在src目录中新建头文件config.h, 内容如下:
#define HASH_SET_H <ext/hash_set>#define HASH_MAP_H <ext/hash_map>#define HASH_NAMESPACE __gnu_cxx #define HAVE_PTHREAD
打开刚才新建的cocos2dx工程下中Android项目下的编译文件Android.mk, 修改为如下
LOCAL_PATH := $(call my-dir) include $(CLEAR_VARS) LOCAL_MODULE := protobufLOCAL_SRC_FILES := ../../classes/protobufxx/src/google/protobuf/descriptor.cc \ ../../classes/protobufxx/src/google/protobuf/descriptor.pb.cc \ ../../classes/protobufxx/src/google/protobuf/descriptor_database.cc \ ../../classes/protobufxx/src/google/protobuf/dynamic_message.cc \ ../../classes/protobufxx/src/google/protobuf/extension_set.cc \ ../../classes/protobufxx/src/google/protobuf/extension_set_heavy.cc \ ../../classes/protobufxx/src/google/protobuf/generated_message_reflection.cc \ ../../classes/protobufxx/src/google/protobuf/generated_message_util.cc \ ../../classes/protobufxx/src/google/protobuf/message.cc \ ../../classes/protobufxx/src/google/protobuf/message_lite.cc \ ../../classes/protobufxx/src/google/protobuf/reflection_ops.cc \ ../../classes/protobufxx/src/google/protobuf/repeated_field.cc \ ../../classes/protobufxx/src/google/protobuf/service.cc \ ../../classes/protobufxx/src/google/protobuf/text_format.cc \ ../../classes/protobufxx/src/google/protobuf/unknown_field_set.cc \ ../../classes/protobufxx/src/google/protobuf/wire_format.cc \ ../../classes/protobufxx/src/google/protobuf/wire_format_lite.cc \ ../../classes/protobufxx/src/google/protobuf/io/coded_stream.cc \ ../../classes/protobufxx/src/google/protobuf/io/gzip_stream.cc \ ../../classes/protobufxx/src/google/protobuf/io/printer.cc \ ../../classes/protobufxx/src/google/protobuf/io/tokenizer.cc \ ../../classes/protobufxx/src/google/protobuf/io/zero_copy_stream.cc \ ../../classes/protobufxx/src/google/protobuf/io/zero_copy_stream_impl.cc \ ../../classes/protobufxx/src/google/protobuf/io/zero_copy_stream_impl_lite.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/atomicops_internals_x86_gcc.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/atomicops_internals_x86_msvc.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/common.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/once.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/stringprintf.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/structurally_valid.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/strutil.cc \ ../../classes/protobufxx/src/google/protobuf/stubs/substitute.cc \ LOCAL_C_INCLUDES := $(LOCAL_PATH)/../../ClassesLOCAL_C_INCLUDES += $(LOCAL_PATH)/../../Classes/protobufxx/src include $(BUILD_STATIC_LIBRARY)编译后去obj目录下把libprotobuf.a拷贝到Classes/protobuf_base/lib/android下
3.IOS下的编译
参考https://gist.github.com/strahlex/10585771
将生成的libprotobuf.a,libprotobuf-lite.a 拷贝到Classes/protobuf_base/lib/ios下
可以去http://download.csdn.net/detail/jijun7885417/7403681 下载
- 在cocos2dx中应用protobuf
- 在cocos2dx中应用protobuf
- 在网络通讯中应用Protobuf
- 在网络通讯中应用Protobuf
- 在quick cocos2dx中增加解析protobuf的扩展
- cocos2dx中protobuf的lua使用
- 【protobuf】 2.在Unity中引用ProtoBuf
- Protobuf在Unity中的应用
- 在cocos2dx中的pushScene()中应用截屏函数
- 在Maven中generate-protobuf
- 在c++中使用protobuf
- 在 Golang 中使用 Protobuf
- 在 Golang 中使用 Protobuf
- 在Unity5中使用Protobuf
- 在egret中使用protobuf
- 在VS中使用Protobuf
- 在Unity5中使用Protobuf
- cocos2dx 3.x以上版本 lua中使用protobuf
- Ubuntu apt-get install 被锁定的解决方法
- 非常全面的贝叶斯网络介绍 非常多的例子说明
- [leetcode]Longest Common Prefix
- 中俄“海上联合-2014”军事演习落幕
- 我的青春谁做主
- 在cocos2dx中应用protobuf
- php添加memcached相关
- oc学习笔记(二)面向对象-类和对象
- 第十四周上机实践项目——体验纯虚函数
- IOS Quartz 各种绘制图形用法---实现画图片、写文字、画线、椭圆、矩形、棱形等
- 简单十步让你全面理解SQL
- 我们都一样
- 夜,曼舞倾城
- BZOJ 1231: [Usaco2008 Nov]mixup2 混乱的奶牛