Swig、Python和输出字符串
我正在使用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
为什么不正常使用它,传一个参数,然后在 Python 里面把它包起来返回一个元组呢?
1
试试这个类型映射(我用的是 SWIG 2.0.0):
%include <cstring.i>
%cstring_output_allocate(char **str, free(*$1));
文档链接:cstring.i