【问题标题】:How do I turn on RTTI with Cygwin?如何使用 Cygwin 打开 RTTI?
【发布时间】:2011-11-17 16:05:23
【问题描述】:

我的Android NDK C++原生代码编译时出现如下错误:

错误:-fno-rtti 不允许使用“dynamic_cast”

有人告诉我打开 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 时出现另一个错误:

对`typeinfo for std::ios_base'的未定义引用

【问题讨论】:

    标签: c++ cygwin android-ndk rtti cocos2d-x


    【解决方案1】:

    看来您需要删除 Application.mk 中的 -fno-rtti gcc 选项。在 Application.mk 中的 APP_CPPFLAGS 变量中查找它。

    【讨论】:

    • 你需要链接libstdc++,将-lstdc++传递给链接器命令行
    • 不使用g++ 命令而不是gcc 自动执行此操作?
    • @Keith:是的,g++ 会自动执行此操作。这里有 2 个选项:要么使用 gcc 并显式传递 -lstdc++,要么使用 g++-lstdc++ 将隐式传递。
    • 这是gccg++ 命令之间行为上的唯一区别吗?编译 C++ 代码时是否有任何理由使用g++
    • @Keith:还有一些其他的区别,例如见this answer。一般来说,C++ 代码最好使用g++
    猜你喜欢
    • 1970-01-01
    • 2012-12-13
    • 1970-01-01
    • 2021-10-06
    • 2010-10-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多