system --> 系统默认的最小支持的C++运行时库
stlport_static --> 以静态链接的方式使用stlport版本的STL
stlport_shared --> 以动态链接的方式使用stlport版本的STL
gnustl_static --> 以静态链接的方式使用gnu版本的STL
如果你和我一样并没有使用AndroID.mk和Application.mk,而是使用Code::Blocks或者Visual studio 2010,那么在配置环境时,如果需要STL的支持,那么就需要注意自己要指定stl的包含路径。链接就根据需要自己链接不同的版本。请注意,stlport有静态链接和动态链接两种方式,而gnu的仅有静态链接方法。
另外一个需要注意的就是官方提供的这个stlport版本不支持RTTI和异常,换言之,如果你使用了stlport版本的STL,则不能使用-fexceptions和-frtti这两个编译选项。
有时,我们在开发中需要使用RTTI。什么?写的好的代码可以避免使用RTTI。不一定。什么情况下使用RTTI,一种很常见的例子,就是,我使用了一个父类指针容器,但是持有的是子类指针。并且,我需要调用子类指针的接口。这种情况下,就必须用RTTI了(或其他替代方案)。
使用RTTI的步骤。 #1.打开 项目目录\androID\jni\Application.mk #2. 注释APP_STL := stlport_static 添加两行:解释:NDK中默认关闭RTTI,所以使用-frtti开启。NDK中附带的stlport库不支持RTTI(也不支持异常)。所以,我们要将其替换为GNU的STL库。(NDK一共有四个STL库,system,stlport静态,stilport动态,gnu静态) 总结APP_STL := gnustl_staticAPP_CPPFLAGS += -frtti
以上是内存溢出为你收集整理的在cocos2d-x中使用RTTI全部内容,希望文章能够帮你解决在cocos2d-x中使用RTTI所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)