我遇到了ctypes的问题。我认为我的类型转换是正确的,错误对我没有意义。 在线错误" arg - ct.c_char_p(logfilepath)" TypeError:期望的字节或整数地址而不是str实例
我在python 3.5和3.4中都尝试过。
功能我打电话:
stream_initialize('stream_log.txt')
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))
答案 0 :(得分:17)
c_char_p
需要bytes
个对象,因此您必须先将string
转换为bytes
:
ct.c_char_p(logfilepath.encode('utf-8'))
另一种解决方案是使用c_wchar_p
类型string
。
答案 1 :(得分:1)
为了完整起见:
也可以将其称为stream_initialize(b'stream_log.txt')
。请注意字符串前面的b
,这会将其解释为bytes
对象。