【问题标题】:Passing bool by reference using SWIG and Python使用 SWIG 和 Python 通过引用传递布尔值
【发布时间】:2010-12-08 02:39:30
【问题描述】:

我使用 SWIG 封装了一个 C++ 库 API,效果很好,但我被“bool &”参数难住了。

原始 API 如下所示:

void foo(bool & bar);

当我从 Python 调用它时,_wrap.cxx 在

处退出包装过程
   int res = SWIG_ConvertPtr(argv[1], &vptr, SWIGTYPE_p_bool, 0);
   _v = SWIG_CheckState(res);
   if (_v) {   

换句话说,swig 无法将我传入的内容转换为 bool 指针。

我正在尝试从 Python 中调用它,如下所示:

   obj = LibObject()
   x = 0
   obj.foo(x)

是否有一个简单的类型映射修复?

【问题讨论】:

    标签: python swig


    【解决方案1】:

    这应该可行:

    %include <typemaps.i>
    %apply bool & INOUT { bool & bar };
    

    每当 SWIG 看到 bool &amp; bar 参数时,它都应将其视为输入/输出参数。如果您只需要它作为输出参数,请使用OUTPUT

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-02-02
      • 1970-01-01
      • 2014-05-28
      • 1970-01-01
      • 2017-08-19
      • 2014-07-26
      • 2016-08-06
      相关资源
      最近更新 更多