SWIG重命名功能



我在接口文件中使用以下代码来重命名全局函数 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;

最新更新