我正在尝试使用Java为C ++解决方案创建一个包装器。
在这个C ++项目中有两个功能:
int func1(const void* b);
int func2(const void* b);
我只需要在int func2(const void* b);
:
%apply char *BYTE { const void* b };
这是一个约束,因为const void *
使用不同于一个函数。
备注:我无权将fucn1的参数从b重命名为其他内容。
谢谢你。
答案 0 :(得分:3)
在func1和func2的声明之间尝试%clear:
%{
#include "funcs.h"
%}
%apply char *BYTE { const void* b };
int func1(const void* b);
%clear const void* b;
int func2(const void* b);
另请注意,声明中变量的名称不会影响被调用代码,即您应该可以执行
%{
#include "funcs.h"
%}
%apply char *BYTE { const void* b };
int func1(const void* b);
int func2(const void* c);
(虽然标题声明第一个arg为b,C ++ args都是位置的,但它们唯一重要的地方是函数体的定义(不是声明),这不是SWIG使用的,因此上面应该有效)。