如何使用Swig将void *函数参数视为Python字符串

时间:2012-10-02 07:53:07

标签: c++ python swig

这是我的c ++代码:

struct Impl
{
  DT* data_ptr_;

  Impl(void* data_ptr)
    : data_ptr_((DT*)data_ptr)
  {
    //do something to decipher data
  }
};

Impl类将void指针作为输入参数。

我想要做的只是将Python字符串(二进制字符串,如Python 2.x)作为参数传递:

data = "I'm a stirng data!"
impl = Impl(data)

但是Swig生成的模块引发了这个

TypeError: in method 'new_Impl', argument 1 of type 'void *'

我是swig的新手,现在已经在SWIG文档中搜索了一整天。 对我来说唯一有用的是swig文档8.3 C字符串处理。但是我的函数并没有真正采用大小整数。

我认为我的问题很简单,我必须错过一些东西,请帮忙。

谢谢!

1 个答案:

答案 0 :(得分:4)

我自己找到了解决方案。

因为我只需要将void *指针作为输入:

%typemap(in) void* = char*;

会做到这一点。

Swig接受char *参数作为字符串类型,并将void *作为指针。 所以使用char *输入类型就可以了。