0

インターフェイス ファイルで次のコードを使用して、グローバル関数の名前を変更していますfree

%ignore free;
%rename(my_free) free;

しかし、結果のヘッダー ファイルのfree名前がmy_free. 私はここで何か悪いことをしていますか? 上記の行は、インターフェイス ファイルの先頭に配置され、それぞれ 1 行目と 2 行目を意味します。ここでこれを見ました。

4

1 に答える 1

1

示した例は、期待どおりに機能しているようです。たとえば、次のようになります。

%module test

%ignore free;
%rename(my_free) free;

// Function declaration:
void free();
// Or use %include if you prefer

ランニング:

swig -Wall -java test.i

test.javaを次のように生成します。

public class test {
  public static void my_free() {
    testJNI.my_free();
  }
}

そのため、期待どおりに名前が変更されました。

実際に%ignoreは、ここでは完全に冗長ですが、%renameこの結果を達成するには、単独で十分です。ただし、順序は重要です。の宣言が表示される前に、と両方が%rename優先される必要があります。%ignorefree

公式ドキュメントはswig.orgにあります、私は他のサイトよりそれを好む傾向があります。(SWIG 2.0を使用している場合は、名前を変更するための追加機能も多数あり、%rename関数を無視するために使用できます%rename("$ignore") free;:)

于 2012-11-03T17:18:46.643 に答える