我想更改通过在swig中扩展C的结构而创建的函数的名称。
我尝试添加%rename (CreateVoxel) _voxel;
,%rename (CreateVoxel) ift_voxel;
或将函数ift_voxel(int x, int y, int z)
的名称更改为CreateVoxel(int x, int y, int z)
,但这些都不起作用。
我不知道该怎么办,我不允许更改我的结构名称。
这是我.i档案的一部分:
%module pyift
%{
#define SWIG_FILE_WITH_INIT
#include "ift.h"
%}
%include "numpy.i"
%fragment("NumPy_Fragments");
%init %{
import_array();
%}
%rename("%(strip:[ift])s") "";
struct ift_voxel {
int x, y, z;
};
%extend ift_voxel {
char *__str__() {
static char tmp[1024];
sprintf(tmp, "[%d, %d, %d]", $self->x, $self->y, $self->z);
return tmp;
}
ift_voxel(int x, int y, int z){
iftVoxel *v = (iftVoxel *) malloc(1, sizeof(iftVoxel));
v->x = x;
v->y = y;
v->z = z;
return v;
}
};
这是.h文件中的结构:
typedef struct ift_voxel {
int x, y, z;
} iftVoxel;
当我想在python中使用这个结构时,我使用这个代码,但我想更改_voxel
的名称:
import pyift as ift
v = ift._voxel(1, 1, 1)
应该是这样的:
import pyift as ift
v = ift.CreateVoxel(1, 1, 1)