我在接口(interface)文件中使用以下代码来重命名全局函数free
%ignore free;
%rename(my_free) free;
但是生成的头文件我没有看到任何 free
被重命名为 my_free
。我有在做什么吗
这里错了?上述行位于接口(interface)文件的顶部,分别表示第一行和第二行。我看到了这个here .
最佳答案
您展示的示例似乎完全按照您的预期工作。例如给出:
%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;
)
关于java - SWIG 重命名函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13120906/