Python 3.5,ctypes:TypeError:期望的字节或整数地址而不是str实例

时间:2016-06-17 18:56:55

标签: python ctypes

我遇到了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))

2 个答案:

答案 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对象。