Swig,python和输出字符串

时间:2010-12-08 23:46:16

标签: python c swig

我正在使用Swig来包装一个如下所示的C接口:

int dosomething(char **str);

其中str是输出字符串。例如,从C中调用它:

char *str= NULL;
int val= dosomething(&str);
   ...
free(str);

在Python中,我希望能够像这样调用它:

val,str = dosomething()

然而,python不断报告

TypeError: dosomething() takes exactly 1 arguments (0 given)

我尝试在类型图中使用OUTPUT,但无济于事。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

试试这个typemap(我正在使用SWIG 2.0.0):

%include <cstring.i>
%cstring_output_allocate(char **str, free(*$1));

文档:cstring.i

答案 1 :(得分:0)

为什么不正常使用它,传递参数,并将其包装在python中以返回元组?