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