Android NDK - C++ 异常会导致第三方原生库崩溃

Android NDK - C++ Exceptions cause crash with 3rd party native library

本文关键字:第三方 原生 崩溃 NDK C++ 异常 Android      更新时间:2023-10-16

我在创建的依赖于另一个第三方库的安卓原生库中遇到了问题。

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

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

如果我将第三方本机库从链接中删除,我可以随心所欲地抛出和捕获异常。 重新添加".so"库,任何抛出都会导致崩溃。

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

我可能会迟到,但我最近遇到了同样性质的崩溃。 就我而言,clang似乎知道编译库的问题,这些库在抛出"本机"异常时崩溃。我已经升级了我的工具链,所以现在它通过当前最新的"android-ndk-r21"交叉编译。 这对我来说做到了。

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

非常令人沮丧。