【发布时间】:2020-12-15 23:34:18
【问题描述】:
我正在使用 ctypes 在 Python 中创建一个到 C 库的接口,并且我有一个 C 函数通常返回一个 char**(C 字符串数组),但在出错时返回 NULL。我不知道返回的数组的长度,最后一个条目将为 NULL。我已经为 restype 尝试了多种类型:
restype = POINTER(c_char_p)
restype = POINTER(POINTER(c_char))
当 C 函数成功返回时,这两种方法都可以正常工作(之后的处理略有不同)。但是当 C 函数有错误并返回 NULL 时,两者都有问题。我原以为返回值为 None,而是获取指向堆栈跟踪的字节字符串的指针,该指针以“ValueError:NULL 指针访问”结束。
一个 C 函数的 restype 应该是什么,它在成功时将 char** 转换为字符串数组,但在错误时将 NULL 转换为 None?
【问题讨论】: