Android NDK - C++ 异常导致第 3 方本机库崩溃
Android NDK - C++ Exceptions cause crash with 3rd party native library
我在创建的 android 本机库中遇到问题,该库依赖于另一个第 3 方库。
我正在使用专有的 Android POS 终端 (Android Lollipop API 22)。它带有一个专有的本机库“.so”,我正在用我自己的本机代码包装该库,这些代码将从 Android Java.
调用
我遇到的问题是,当我的代码抛出一个在本机库中捕获的 c++ 异常(也就是说,我没有向 java 抛出异常)时,应用程序崩溃并出现 SIGSEGV 致命错误抛出语句。
如果我从 link 中取出第 3 方本机库,我可以随心所欲地抛出和捕获异常。添加回“.so”库,任何抛出都会导致崩溃。
知道如何排查或解决问题吗?
我可能会迟到,但我最近遇到了同样性质的崩溃。
在我的例子中,clang 似乎知道编译库的问题,这些库在抛出 "native" 异常时崩溃。我已经升级了我的工具链,所以现在它通过当前最新的 "android-ndk-r21" 交叉编译。
那对我有用。
原来是第三方库的问题。如果构建的本机库没有异常,则调用该库的代码也不能使用异常。
非常沮丧。
我在创建的 android 本机库中遇到问题,该库依赖于另一个第 3 方库。
我正在使用专有的 Android POS 终端 (Android Lollipop API 22)。它带有一个专有的本机库“.so”,我正在用我自己的本机代码包装该库,这些代码将从 Android Java.
调用我遇到的问题是,当我的代码抛出一个在本机库中捕获的 c++ 异常(也就是说,我没有向 java 抛出异常)时,应用程序崩溃并出现 SIGSEGV 致命错误抛出语句。
如果我从 link 中取出第 3 方本机库,我可以随心所欲地抛出和捕获异常。添加回“.so”库,任何抛出都会导致崩溃。
知道如何排查或解决问题吗?
我可能会迟到,但我最近遇到了同样性质的崩溃。 在我的例子中,clang 似乎知道编译库的问题,这些库在抛出 "native" 异常时崩溃。我已经升级了我的工具链,所以现在它通过当前最新的 "android-ndk-r21" 交叉编译。 那对我有用。
原来是第三方库的问题。如果构建的本机库没有异常,则调用该库的代码也不能使用异常。
非常沮丧。