我有一个 SWIG 模块,我想在其中添加一个手动方法。
%module frob
%inline %{
int Foo(int x, int y) { return x+y; }
PyObject* Bar(PyObject* self, PyObject* args) {
return PyString_FromString("Hello from Bar");
}
%}
但是,当我在它上面运行 swig 时swig -python frob.i
,我看到 SWIG 实际上将 Foo 和 Bar 都包装为 _wrap_Foo、_wrap_Bar。
SWIGINTERN PyObject *_wrap_Foo(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
// ...
result = (int)Foo(arg1,arg2);
// ...
}
SWIGINTERN PyObject *_wrap_Bar(PyObject *SWIGUNUSEDPARM(self), PyObject *args) {
// ...
result = (PyObject *)Bar(arg1,arg2);
// ...
}
如何告诉 SWIG 停止为我包装 Bar,而只是在 PyMethodDef 表中公开它?