首页 > 解决方案 > Android NDK - C++ 异常导致第 3 方本机库崩溃

问题描述

我在创建的依赖于另一个 3rd 方库的 android 本机库中遇到问题。

我正在使用专有的 Android POS 终端(Android Lollipop API 22)。它带有一个专有的本机库“.so”,我用我自己的本机代码包装了该库,该代码将从 Android Java 调用。

我遇到的问题是,当我的代码抛出本地库中捕获的 c++ 异常(也就是说,我没有向 java 抛出异常)时,应用程序在 throw 语句处因 SIGSEGV 致命错误而崩溃。

如果我将第 3 方本机库从链接中取出,我可以随心所欲地抛出和捕获异常。添加回“.so”库,任何抛出都会导致崩溃。

知道如何排除故障或解决问题吗?

标签: androidc++exceptionandroid-ndksegmentation-fault

解决方案


事实证明,问题出在第三方库上。如果本机库是在没有异常的情况下构建的,那么调用该库的代码也不能使用异常。

非常令人沮丧。


推荐阅读