swig 3.0.1,python 3和bool数据类型

时间:2014-06-04 13:44:51

标签: python c++ swig

我正在更新我的绑定以支持swig 3.0.1,但是我在尝试调用一个需要布尔值的函数时遇到错误(它在2.0.9之前没有发生过)... 具体做法是:

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

有关实际改变的任何提示?

2 个答案:

答案 0 :(得分:0)

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

答案 1 :(得分:0)

我需要向后兼容性,所以这不是一个可接受的选择。我能够使用swig命令行上的-DSWIG_PYTHON_LEGACY_BOOL覆盖旧版本的行为