构建我的C ++应用程序时,此代码行的构建失败
if (!PyTuple_GetByte(poArgs, 0, &SourceCell.window_type))
出现此错误
错误C2664:'PyTuple_GetByte':无法转换参数3 'char *'到'unsigned char *'
这是被调用的函数:
bool PyTuple_GetByte(PyObject* poArgs, int pos, unsigned char* ret);
第三个参数&SourceCell.window_type
是char
类型。
有没有办法在函数调用中转换/转换参数,如
if (!PyTuple_GetByte(poArgs, 0, reinterpret_cast<unsigned char*>(&SourceCell.window_type)))
还是我必须以另一种方式处理它?</ p>
答案 0 :(得分:1)
从错误中,PyTuple_GetByte
函数的签名期望第unsigned char*
个类型的第三个参数,但是在调用时传递了类型为char*
的变量。我认为你有两种选择。
您可以更改功能PyTuple_GetByte
的签名,以期望char*
参数。
您需要将输入变量从char*
类型转换为unsigned char*
类型,然后才能将其传递到PyTuple_GetByte
。
转换通常是这样的:
unsigned char* convert_var = reinterpret_cast<unsigned char*>(&SourceCell.window_type); // (c++ way)
或
unsigned char* convert_var = (unsigned char*)(&SourceCell.window_type); // (c way)