如何在Cygwin中启用RTTI?

4
当我的Android NDK C++本地代码被编译时,出现以下错误:
error: 'dynamic_cast' not permitted with -fno-rtti
有人告诉我要打开RTTI,但我不知道怎么做。我需要修改Application.mk吗?
我的Application.mk文件:
# it is needed for ndk-r5

APP_STL := stlport_static

APP_ABI := armeabi armeabi-v7a

APP_MODULES := cocos2d cocosdenshion chipmunk box2d tempestkeep

当我在某个.o文件中添加APP_CPPFLAGS += -frtti时,出现了另一个错误:

未定义对`std :: ios_base'的类型信息引用

1个回答

2
看起来你需要在Application.mk中删除-fno-rtti gcc选项。在Application.mk中查找APP_CPPFLAGS变量即可。

你需要链接 libstdc++ 库,将 -lstdc++ 传递给链接器命令行。 - ks1322
使用g++命令而不是gcc会自动完成这个任务吗? - Keith Thompson
@Keith:是的,g++会自动处理这个问题。这里有两个选项:要么使用gcc并显式地传递-lstdc++,要么使用g++-lstdc++将被隐式传递。 - ks1322
gccg++命令之间的行为差异是唯一的吗?编译C++代码时,不使用g++是否有任何理由? - Keith Thompson
@Keith:还有一些其他的区别,例如请参考这个答案。总的来说,对于C++代码最好使用g++ - ks1322

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接