Swig、Python和输出字符串

1 投票
2 回答
1688 浏览
提问于 2025-04-16 08:16

我正在使用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

撰写回答