我在接口文件中使用以下代码来重命名全局函数 free
%ignore free;
%rename(my_free) free;
但是结果标头文件,我没有看到free
中的任何一个被重命名为my_free
。我做什么这里错了?上面的行分别放在接口文件的顶部,分别表示第一行和第二行。我在这里看到了。
您显示的示例似乎完全按照您的期望工作。例如给出:
%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 as:
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;
)