0

私はc++クラスを持っていて、それをjavaにラップするためにswigを使用しています。このクラスに新しいメンバー関数を拡張または追加したいが、この新しいメンバー関数として独自のjni関数を使用するか、この新しいメンバー関数で独自のjni関数を呼び出させたい。どうすれば小枝でそれを行うことができますか?%nativeは知っていますが、静的メソッドしか生成されないようですが、オブジェクトメソッドを生成したいと思います。

4

1 に答える 1

0

nativeプロキシ クラスの 1 つに追加のメソッドを貼り付けたいだけの場合は、次のような方法でそれを行うことができます。

%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 に答える