【发布时间】:2019-12-04 20:24:39
【问题描述】:
我正在创建的依赖于另一个 3rd 方库的 android 本机库存在问题。
我正在使用专有的 Android POS 终端(Android Lollipop API 22)。它带有一个专有的本机库“.so”,我用我自己的本机代码包装该库,该代码将从 Android Java 调用。
我遇到的问题是,当我的代码抛出本地库中捕获的 c++ 异常(也就是说,我没有向 java 抛出异常)时,应用程序在 throw 语句处因 SIGSEGV 致命错误而崩溃。
如果我将第 3 方本机库从链接中取出,我可以随心所欲地抛出和捕获异常。添加回“.so”库,任何抛出都会导致崩溃。
知道如何解决或解决问题吗?
【问题讨论】:
-
C++ 异常展开堆栈。如果异常试图展开非 C++ 框架,并且该非 C++ 框架与您的特定 C++ 编译器的堆栈展开方式不兼容,那么 SIGSEGV 就不足为奇了。
标签: android c++ exception android-ndk segmentation-fault