c++ - Android、SWIG 和双向通信

标签 c++ android android-ndk swig

我有一个 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/

相关文章:

java - 如何读取从 Java 传递到 JNI 的对象数组

c++ - 如何使模板类的一个实例与同一模板的另一个实例成为 friend

android - 如何通过wifi设置PC和android设备之间的连接

android - 在cordova webview中访问设备 native 功能

android - 在插件中使用 AAssetManager_fromJava 不直接从 Java VM 调用(从 Unity 调用)

c++ - 如何更改 CLion 使用的 LLDB 版本?

c++ - GCC 链接器 : staticA can't see staticB while linking other shared library

java - Android Youtube V3 简单 API 403 错误 : accessNotConfigured

c++ - 如何释放从 native 代码发送回 Java 的 jstring?

android - android NDK中预构建工具链和自定义工具链编译器之间的区别