【问题标题】:Swig, python and output stringsSwig、python 和输出字符串
【发布时间】:2010-12-08 23:46: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,但无济于事。有什么想法吗?

【问题讨论】:

  • 我可以建议你试试 ctypes 吗?以这种方式移植 C 函数要快得多
  • 不幸的是,ctypes 仅适用于 python。我正在使用 swig,因为我需要为许多不同的语言(Java 等)进行包装。

标签: python c swig


【解决方案1】:

试试这个类型图(我使用的是 SWIG 2.0.0):

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

文档:cstring.i

【讨论】:

    【解决方案2】:

    为什么不正常使用呢,传个参数,在python里面包裹一下返回一个元组?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多