是否有办法在Android上的JNI(Java Native Interface)库中使用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 ++运行时?
编辑:我必须假设使用我的JNI库的任何Java应用程序也可能想要使用其他我无法控制的JNI库。这是否以任何方式限制了我的选项?
编辑:我说的是JNI库完全内部使用的C++异常处理。也就是说,异常在库内抛出和捕获,从未逃逸出库。
根据Android文档(docs/CPLUSPLUS-SUPPORT.html)所述,只有在使用“GNU libstdc ++”作为C ++运行时而不是默认值时才支持异常。
问题是文档还指出,程序的所有部分必须使用相同的C ++运行时:
“您只能选择单个C ++运行时,所有代码都将依赖于它。不可能混合使用针对不同C ++运行时编译的共享库。”
据我理解,这意味着我被迫使用与Dalvik(Android上的Java VM)相同的C ++运行时。
因此,如果Dalvik没有使用“GNU libstdc ++”,那么我是否仍然可以在我的JNI库中使用异常?
Dalvik使用哪个C ++运行时?
编辑:我必须假设使用我的JNI库的任何Java应用程序也可能想要使用其他我无法控制的JNI库。这是否以任何方式限制了我的选项?