2011-04-13 61 views
1

我有一个C++ API我不能改变其中:机器人,SWIG和双向通信

  • 暴露对象(容易)
  • 暴露必须由呼叫者导出接口(古典触发监听设计模式)。

我设法将此API封装到使用SWIG和导向器功能的python中,该功能允许跨语言派生。 但是,当我尝试使用ndk进行编译时,为了将它暴露在Dalvik的Android虚拟机中,我发现SWIG中的导向器通过RTTI得到支持,并且该Android不支持RTTI。

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

回答

1

Android不支持RTTI和来自NDK r5的异常。只需添加-fexceptions-frtti编译标志并将APP_STL := gnustl_static行添加到Application.mk文件。

+0

和dalvik虚拟机suport加载jni与这些选项编译? – Bruce 2011-05-18 14:18:31

+0

是的,它确实如此,一切正常。 – Michael 2011-05-18 19:53:35

-1

您需要编写自己的不使用RTTI的JNI,恐怕。

+0

旁边的问题:是否有一种方法让swig /任何其他包装工具为我写这个? – Bruce 2011-05-14 09:01:03