2010-12-08 58 views
1

我使用痛饮包装一个C接口,看起来像这样:痛饮,Python和输出字符串

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) 

我试过在typemap中使用OUTPUT,但无济于事。有任何想法吗?

+0

可能我建议你试试ctypes的?它的端口C函数以这种方式快得多 – damir 2010-12-08 23:49:47

回答

1

试试这个类型映射(我使用痛饮2.0.0):

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

文档:cstring.i

0

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