我有一个 C++ api,我无法更改它:
- 暴露对象(简单)
- 公开必须由调用者派生的接口(interface)(经典的触发监听器设计模式)。
我设法使用 SWIG 和 director 功能将此 API 包装到 python,这允许跨语言派生。 然而,当我尝试使用 ndk 编译它,并在 Android 的 Dalvik VM 中公开它时,我发现 SWIG 中的 Controller 通过 RTTI 得到支持,而 Android 不支持 RTTI。
关于如何解决此限制的任何想法?基本上,我有一种使用 JNI 和 SWIG 在 Java 中公开我的 native 对象的简单方法,但我需要能够从 native 代码触发我的 Java 代码。
最佳答案
Android 确实支持 RTTI 和 NDK r5 的异常(exception)情况。只需添加 -fexceptions
和 -frtti
编译标志,并将行 APP_STL := gnuSTL_static
添加到 Application.mk
文件。
关于c++ - Android、SWIG 和双向通信,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5653102/