android studio error: cannot use ‘throw‘ with exceptions disabled

android studio error: cannot use ‘throw’ with exceptions disabled

最近遇到这样一个问题,在网上搜到原因是:
默认的情况下,Android Studio中是没有开启C++的标准异常,所以,会导致一下编译报错:cannot use ‘throw’ with exceptions disabled
百度到的解决方法都是:
在app-build.gradle中:android节点- defaultConfig - externalNativeBuild加入:cppFlags “-fexceptions”

 defaultConfig {
	    ……
        externalNativeBuild {
            cmake {
                cppFlags "-fexceptions"
            }
        }
        ……
    }

但是在我自己的项目里改后没有变化。因为我项目中用用到ncnn库,里面的4个abi目录下的lib/cmake/ncnn/ncnn.cmake,都有此行:

 INTERFACE_COMPILE_OPTIONS "-fno-rtti;-fno-exceptions" 

注释掉此行后解决了’throw’的问题。

========================================================================分割线
解决了上述问题后又产生了新问题:)
undefined reference to `typeinfo for ncnn::Layer’
查询原因是官方的 opencv 库是需要开启 rtti 的,这和目前 ncnn 的预编译包在使用自定义层时会不兼容。因为我的项目中用到了opencv库,也用到了自定义层。
解决方案:所以将上面4个abi目录下的lib/cmake/ncnn/ncnn.cmake里注释掉的那行改为

INTERFACE_COMPILE_OPTIONS "-fno-rtti;-fexceptions" 

;成功跑通。
参考链接:
1.https://codeleading.com/article/437996341/#:~:text=Android%20studio%20NDK%E7%AC%94%E8%AE%B02-%E9%94%99%E8%AF%AF%E6%80%BB%E7%BB%93%201.Error%3A%20cannot%20use%20%E2%80%98throw%E2%80%99%20with,with%20exceptions%20disabled%20%E8%A7%A3%E5%86%B3%EF%BC%9A%E5%9C%A8app-build.gradle%E4%B8%AD%EF%BC%9Aandroid%E8%8A%82%E7%82%B9-%20defaultConfig%20-%20externalNativeBuild%E5%8A%A0%E5%85%A5%3AcppFlags%20%E2%80%9C-fexceptions%E2%80%9D
2.https://github.com/benjaminwan/OcrLiteAndroidNcnn
3.https://github.com/Tencent/ncnn/issues/2694

  • 6
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值