cannot use ‘throw’ with exceptions disabled(转)

在为 DragonBonesCPP/refactoring 的 cocos2d-x-3.2 demo 增加 Android 编译时,NDK 报了一个编译错误:

error: cannot use ‘throw’ with exceptions disabled
throw std::invalid_argument(“Invalid data.”);

这是由于 DragonBonesCPP 库使用了 C++ 标准异常,而 Android NDK 编译器默认不支持 C++ 异常控制导致。

但是,从Android NDK r5 版本开始,NDK 就开始支持 C++ 异常控制了,我的版本是 r9d ,为什么还会出现这个错误呢?

原来,NDK 编译器的 C++ 异常控制特性支持默认是关闭的。要打开它,可以这样做:

编辑 Android.mk 文件,加入下面的代码:

LOCAL_CPP_FEATURES += exceptions

或者:

LOCAL_CPPFLAGS += -fexceptions

这样可以对当前项目开启 C++ 异常控制编译支持。

如果想偷懒,也可以编辑 Application.mk 文件,加入下面的代码:

APP_CPPFLAGS += -fexceptions

这样,所有模块的 C++ 异常控制编译支持都会被打开。

上面的两个 mk 文件位于 proj.android/jni 文件夹中。

 

转自:https://blog.zengrong.net/post/2168.html

原文链接: https://www.cnblogs.com/zl1991/p/8615870.html

欢迎关注

微信关注下方公众号,第一时间获取干货硬货;公众号内回复【pdf】免费获取数百本计算机经典书籍

    cannot use 'throw' with exceptions disabled(转)

原创文章受到原创版权保护。转载请注明出处:https://www.ccppcoding.com/archives/270841

非原创文章文中已经注明原地址,如有侵权,联系删除

关注公众号【高性能架构探索】,第一时间获取最新文章

转载文章受原作者版权保护。转载请注明原作者出处!

(0)
上一篇 2023年2月14日 下午9:31
下一篇 2023年2月14日 下午9:32

相关推荐