有什么方法可以在 Android 上的 JNI(Java 本机接口)库中使用 C++ 异常?
编辑:我说的是完全在 JNI 库内部的 C++ 异常处理。也就是说,异常在库中被抛出和捕获,它永远不会离开库。
根据 Android 文档 (docs/CPLUSPLUS-SUPPORT.html),只有当我使用 'GNU libstdc++' 作为 C++ 运行时而不是默认值时,才支持异常。
问题是文档还声明程序的所有部分都必须使用相同的 C++ 运行时:
“您只能选择所有代码都依赖的单个 C++ 运行时。不能混合针对不同 C++ 运行时编译的共享库。”
根据我的解释,这意味着我不得不使用与 Dalvik(Android 上的 Java VM)相同的 C++ 运行时。
那么,如果 Dalvik 不使用“GNU libstdc++”,是否还有一种方法可以在我的 JNI 库中使用异常?
Dalvik 是针对什么 C++ 运行时编译的?
编辑:我必须假设无论哪个 Java 应用程序正在使用我的 JNI 库,可能还想使用其他 JNI 库,我无法控制。这会以任何方式限制我的选择吗?