cocos2d-x RTTI使用
来源:互联网 发布:tomcat源码分析 编辑:程序博客网 时间:2024/04/30 02:44
原文地址(http://4137613.blog.51cto.com/4127613/762112)
有时,我们在开发中需要使用RTTI。什么?写的好的代码可以避免使用RTTI。不一定。什么情况下使用RTTI,一种很常见的例子,就是,我使用了一个父类指针容器,但是持有的是子类指针。并且,我需要调用子类指针的接口。这种情况下,就必须用RTTI了(或其他替代方案)。
使用RTTI的步骤。
#1.打开 项目目录\android\jni\Application.mk
#2.
注释APP_STL := stlport_static
添加两行:
APP_STL := gnustl_staticAPP_CPPFLAGS += -frtti
解释:NDK中默认关闭RTTI,所以使用-frtti开启。NDK中附带的stlport库不支持RTTI(也不支持异常)。所以,我们要将其替换为GNU的STL库。(NDK一共有四个STL库,system,stlport静态,stilport动态,gnu静态)
#3.
然后,使用cygwin控制台进入项目目录,clean一下。(最好直接删项目里的lib和obj文件夹,因为你改了编译选项,clean也是删不干净的。)
重新执行编译sh脚本即可
题外话:
1.我测试了自己的手机,黑屏原因不明,连cocos2dx自带例子用RTTI编译都不行。另外,也不是所有平台都支持RTTI,android也是后续才增加支持的。所以你用了RTTI兼容性需考虑。
2.RTTI会造成代码体积膨胀。效率可能会下降一点,不过我认为这不算什么问题。
3.替代方案,最简单的使用cocos2dx的setTag和getTag。不过这要你自己定义一套符号系统,而且看起来傻一些。
- cocos2d-x RTTI使用
- 在cocos2d-x中使用RTTI
- cocos2d-x学习笔记07:在cocos2d-x中使用RTTI
- Cocos2d-x--使用Cocos2d-x v3.0.0
- cocos2d-x CCTextureCache使用
- Cocos2d-x使用SQLite
- cocos2d-x 使用断言
- cocos2d-x 使用plugin
- Cocos2d-X tolua++ 使用
- cocos2d-x jsonCpps使用
- cocos2d-x 使用 CCScale9Sprite
- cocos2d-x CCEditBox使用
- cocos2d-x函数使用
- Cocos2d-x OpenGL 使用
- Cocos2d-x Layout使用
- Cocos2d-x ScrollView使用
- RTTI使用
- cocos2d cocos2d-x 使用自定义字体
- 去掉 ubuntu 主目录加密的方法
- C++异常机制的实现方式和开销分析
- ioctl函数介绍
- Confusion Matrix
- ruby on rails 测试笔记(model)
- cocos2d-x RTTI使用
- jvm的内存溢出异常
- Android下获取状态栏的高度
- 接口和抽象类
- java获取当前日期的前一天日期与字符串日期之间的转换
- C++ socket编程基础(理论篇)
- STL 计数(count,count_if)的用法
- android29——
- try...catch...效率思考