0

我有一个 c++ 类,我使用 swig 将它包装到 java 中。我想为这个类扩展或添加一个新的成员函数,但我也想使用我自己的jni函数作为这个新的成员函数或者让我自己的jni函数在这个新的成员函数中被调用。我怎么能在 swig 中做到这一点?我知道 %native,但它似乎只生成静态方法,但我希望它生成对象方法。

4

1 回答 1

0

如果您只想native在其中一个代理类中添加一个额外的方法,您可以使用以下方法:

%module test;

%typemap(javacode) foo %{
  public void native HandRolled();
%}

struct foo {
  void bar();
};

void test(foo& f);

就个人而言,如果您有很多不想%native直接使用的本机代码,我倾向于将它们放入单独的类中,即您将 SWIG 生成的部分和手册、JNI 部分作为不同的项目。然后,您可以根据需要使用类型映射将纯 JNI 部分“按摩”到 SWIG 生成的部分中。

于 2012-06-02T13:02:54.467 回答