swig 3.0.1、python 3和bool数据类型

swig 3.0.1、python 3和bool数据类型,python,c++,swig,Python,C++,Swig,我正在更新绑定以支持swig 3.0.1,但在尝试调用需要布尔值的函数时出现错误(以前在2.0.9中没有出现过这种情况)。。。 具体而言: TypeError:在方法“MClass_setStatus”中,参数2的类型为“bool” 关于实际更改内容的任何提示?您可以使用不同但兼容的签名导出函数。在您的例子中,将func的导出声明为int而不是bool。SWIG将为int生成包装代码,但是编译器将调用C++函数的BoOL函数(除非你有一本书过载)。python中没有重载,所以如果您将bool作为

我正在更新绑定以支持swig 3.0.1,但在尝试调用需要布尔值的函数时出现错误(以前在2.0.9中没有出现过这种情况)。。。 具体而言:

TypeError:在方法“MClass_setStatus”中,参数2的类型为“bool”


关于实际更改内容的任何提示?

您可以使用不同但兼容的签名导出函数。在您的例子中,将func的导出声明为int而不是bool。SWIG将为int生成包装代码,但是编译器将调用C++函数的BoOL函数(除非你有一本书过载)。python中没有重载,所以如果您将bool作为调用参数,我不知道SWIG包装器代码是否会标记错误。Swig可能不喜欢隐式int->bool,但隐式bool->int可能没问题。

我需要向后兼容,所以这不是一个可接受的选项。我能够在swig命令行上使用-DSWIG_PYTHON_legacy_BOOL覆盖遗留行为

更多信息,似乎绑定现在希望在从PYTHON调用BOOL时显式转换为BOOL,如setStatus(BOOL(1))。任何人都可以建议使用类型映射将其还原,就像swig2中自动将int转换为bool一样?