Swig 3.0.1, python 3和bool数据类型

swig 3.0.1 , python 3 and bool data types

本文关键字:bool 数据类型 python Swig      更新时间:2023-10-16

我正在更新我的绑定以支持swig 3.0.1,但是当我试图调用一个期望布尔值的函数时,我得到了一个错误(这在2.0.9之前没有发生)…具体来说:

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

我需要向后兼容,所以这不是一个可接受的选项。我能够在swig命令行

上使用-DSWIG_PYTHON_LEGACY_BOOL覆盖遗留行为。

您可以使用不同但兼容的签名导出函数。在这种情况下,声明函数的输出为int而不是bool。SWIG将为int生成包装代码,但编译器将在c++级别调用bool函数(除非您有book重载)。python中没有重载,所以我不知道如果您将bool作为调用参数,SWIG包装器代码是否会标记错误。Swig可能不喜欢隐式int -> bool,但隐式bool -> int可能是可以的。