【问题标题】:How to use Swig to treat a void * function parameter as Python string如何使用 Swig 将 void * 函数参数视为 Python 字符串
【发布时间】:2012-10-02 07:53:06
【问题描述】:

这是我的 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 字符串处理。但我的函数并没有真正采用大小整数。

我认为我的问题很简单,我一定错过了什么,请帮忙。

谢谢!

【问题讨论】:

    标签: c++ python swig


    【解决方案1】:

    我自己找到了解决方案。

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

    %typemap(in) void* = char*;
    

    会成功的。

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-01-28
      • 1970-01-01
      • 1970-01-01
      • 2022-12-06
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多