我正在使用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,但无济于事。有什么想法吗?
答案 0 :(得分:1)
试试这个typemap(我正在使用SWIG 2.0.0):
%include <cstring.i>
%cstring_output_allocate(char **str, free(*$1));
文档:cstring.i
答案 1 :(得分:0)
为什么不正常使用它,传递参数,并将其包装在python中以返回元组?