インターフェイス ファイルで次のコードを使用して、グローバル関数の名前を変更していますfree
%ignore free;
%rename(my_free) free;
しかし、結果のヘッダー ファイルのfree
名前がmy_free
. 私はここで何か悪いことをしていますか? 上記の行は、インターフェイス ファイルの先頭に配置され、それぞれ 1 行目と 2 行目を意味します。ここでこれを見ました。
インターフェイス ファイルで次のコードを使用して、グローバル関数の名前を変更していますfree
%ignore free;
%rename(my_free) free;
しかし、結果のヘッダー ファイルのfree
名前がmy_free
. 私はここで何か悪いことをしていますか? 上記の行は、インターフェイス ファイルの先頭に配置され、それぞれ 1 行目と 2 行目を意味します。ここでこれを見ました。
示した例は、期待どおりに機能しているようです。たとえば、次のようになります。
%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
優先される必要があります。%ignore
free
公式ドキュメントはswig.orgにあります、私は他のサイトよりそれを好む傾向があります。(SWIG 2.0を使用している場合は、名前を変更するための追加機能も多数あり、%rename
関数を無視するために使用できます%rename("$ignore") free;
:)