使用SWIG和Python通过引用传递bool

时间:2010-12-08 02:39:31

标签: python swig

我使用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)

是否有针对此的简单类型图解决方案?

1 个答案:

答案 0 :(得分:1)

这应该有效:

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

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