问题描述
我在使用ctypes时遇到问题。我认为我的类型转换是正确的,并且该错误对我来说没有意义。
线路上的错误 arg-ct.c_char_p(logfilepath)
TypeError:预期为字节或整数地址,而不是str实例
I'm having an issue with ctypes. I think my type conversion is correct and the error isn't making sense to me. Error on line " arg - ct.c_char_p(logfilepath) "TypeError: bytes or integer address expected instead of str instance
python 3.5和3.4。
I tried in both python 3.5 and 3.4.
我正在调用的函数:
stream_initialize('stream_log.txt')
Stream_initialize代码
Stream_initialize code"
def stream_initialize(logfilepath):
f = shim.stream_initialize
arg = ct.c_char_p(logfilepath)
result = f(arg)
if result:
print(find_shim_error(result))
推荐答案
c_char_p
需要 bytes
对象,因此您必须转换 string
到 bytes
首先:
c_char_p
takes bytes
object so you have to convert your string
to bytes
first:
ct.c_char_p(logfilepath.encode('utf-8'))
另一种解决方案是使用 c_wchar_p
类型,该类型采用字符串
。
Another solution is using the c_wchar_p
type which takes a string
.
这篇关于Python 3.5,ctypes:TypeError:应使用字节或整数地址(而非str实例)的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!