driverOptions.put_int('Color Source', 'Visible Colors') Boost.Python.ArgumentError: Python argument types in PropertyTree.put_int(PropertyTree, str, str) did not match C++ signature: put_int(class boost::property_tree::basic_ptree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > {lvalue}, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > item_path, int value)
时间: 2023-09-22 15:07:34 浏览: 43
这个错误提示是因为 Python 传递给 C++ 函数的参数类型与 C++ 函数签名不匹配。具体来说,C++ 函数签名中要求第二个参数为 `std::string` 类型,而 Python 中传递的是 `str` 类型。可以将 Python 中的 `str` 转换为 `std::string`,例如:
```python
import boost.python
from boost.python import *
import std
driverOptions.put_int(std.string('Color Source'), 1)
```
或者在函数调用时将字符串转换为 `std::string` 类型:
```python
driverOptions.put_int(boost.python.str('Color Source'), 1)
```
相关问题
driverOptions.put_int('Color Source', 'Visible Colors') Boost.Python.ArgumentError: Python argument types in PropertyTree.put_int(PropertyTree, str, str) did not match C++ signature: put_int(class boost::property_tree::basic_ptree<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> >,struct std::less<class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > > > {lvalue}, class std::basic_string<char,struct std::char_traits<char>,class std::allocator<char> > item_path, int value)如何解决这个问题
这个错误提示是因为 Python 中传入的参数类型与 C++ 中定义的函数签名不匹配所致。
通过错误提示可以看到,Python argument types in PropertyTree.put_int(PropertyTree, str, str) 中,第二个和第三个参数都是字符串类型,而 C++ signature 中第二个参数是字符串类型,第三个参数是整型。因此,我们需要将第三个参数从字符串类型转换为整型。
可以尝试使用 int() 函数将字符串转换为整型,例如:
```
driverOptions.put_int('Color Source', int('Visible Colors'))
```
或者,如果你确定 'Visible Colors' 对应的整数值,也可以直接传入整型,例如:
```
driverOptions.put_int('Color Source', 1)
```
注意,这里假设 'Visible Colors' 对应的整数值是 1,具体需要根据上下文来确定。
driverOptions.put_int('Color Source', int('Visible Colors')) ValueError: invalid literal for int() with base 10: 'Visible Colors'
这个错误是因为你尝试将字符串"Visible Colors"转换为整数,但是它无法被转换为整数。我猜测这是因为你在将某个选项转换为整数时使用了错误的字符串。请检查一下你的代码,特别是与"Color Source"相关的代码,确保你正在使用正确的字符串来设置选项。如果你不确定应该使用哪个字符串,可以查看文档或示例代码,或者询问其他开发者。