我在接口文件中使用以下代码来重命名全局函数free
%ignore free;
%rename(my_free) free;
但结果头文件我看不到任何free
被重命名为my_free
。我在做什么吗
错了吗?上面的行放在接口文件的顶部,分别表示第一行和第二行。我看到了here。
答案 0 :(得分: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
取代%ignore
,两者都必须在free
声明之前。
官方文档位于swig.org,我倾向于偏好其他网站。 (如果您是using SWIG 2.0 there's a lot of extra features for renaming too并且可以使用%rename
忽略功能:%rename("$ignore") free;
)