我怎样才能让 swig 包装一个链表类型的结构?
这是我认为非常标准的列表标题。因为结构体 指向自身,我们需要这个由两部分组成的声明。称之为 listicle.h
:
typedef struct _listicle listicle;
struct _listicle{
int i;
listicle *next;
};
我正在尝试让 swig 来包装它,以便 Python 用户可以使用 listicle 结构。这是我现在在 listicle.i
中的内容:
%module listicle
%{
#include "listicle.h"
%}
%include listicle.h
%rename(listicle) _listicle;
%extend listicle {
listicle() {return malloc (sizeof(listicle));}
}
正如您在这里询问的那样,它不起作用。所有各种组合 我以自己特殊的方式尝试过每一次失败。 [这一个:%extend 为未声明的类 listicle 定义
。将其更改为 %extend _listicle
(并修复构造函数)并在 Python 中加载会给出 类型对象“_listicle”没有属性“_listicle_swigregister”
。等等。]
建议?
Here's what I take to be a pretty standard header for a list. Because the struct
points to itself, we need this two-part declaration. Call it listicle.h
:
typedef struct _listicle listicle;
struct _listicle{
int i;
listicle *next;
};
I'm trying to get swig to wrap this, so that the Python user can make use of the listicle
struct. Here's what I have in listicle.i
right now:
%module listicle
%{
#include "listicle.h"
%}
%include listicle.h
%rename(listicle) _listicle;
%extend listicle {
listicle() {return malloc (sizeof(listicle));}
}
As you can tell by my being here asking, it doesn't work. All the various combinations
I've tried each fail in their own special way. [This one: %extend defined for an undeclared class listicle
. Change it to %extend _listicle
(and fix the constructor) and loading in Python gives type object '_listicle' has no attribute '_listicle_swigregister'
. And so on.]
Suggestions?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
也许你可以忽略 python 代码中的 next 指针,而只使用在 python 中调用的 next() 函数?或者也许我不明白问题是什么......
Maybe you could ignore the next pointer in the python code, and just have a next() function which you call in python? Or maybe I'm not understanding what the problem is...