在swig中,如何在类中使用自己的jni函数?

时间:2012-05-25 17:19:02

标签: java java-native-interface swig

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

1 个答案:

答案 0 :(得分:0)

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

%module test;

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

struct foo {
  void bar();
};

void test(foo& f);

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