Android,SWIG和双向通信

时间:2011-04-13 17:23:16

标签: c++ android android-ndk swig

我有一个C ++ api我无法改变:

  • 公开对象(简单)
  • 公开必须由调用者派生的接口(经典触发器 - 侦听器设计模式)。

我设法使用SWIG和导演功能将此API封装到python,这允许跨语言派生。 但是,当我尝试使用ndk编译它时,为了在Dalvik的Android中的VM中公开它,我发现SWIG中的控制器是通过RTTI支持的,并且Android不支持RTTI。

有关如何解决此限制的任何想法?基本上,我有一种使用JNI和SWIG在Java中公开我的本机对象的简单方法,但我需要能够从本机代码中触发我的Java代码。

2 个答案:

答案 0 :(得分:1)

Android确实支持来自NDK r5的RTTI和例外。只需添加-fexceptions-frtti编译标记,并在APP_STL := gnustl_static文件中添加行Application.mk

答案 1 :(得分:-1)

你需要编写自己不使用RTTI的JNI,我担心。