CFFI:TypeError:ctype'char []'的初始化程序必须是字节或列表或元组,而不是str

时间:2017-08-14 22:26:49

标签: python ffi python-cffi

使用CFFI library for Python,我试图将Python字符串变成char *,这样我就可以将它传递给接受char *的C函数。我似乎无法弄清楚正确的咒语是什么。

考虑这个例子:

>>> from cffi import FFI
>>> ffi = FFI()
>>> ffi.new("char[]", "bob")

结果是:

TypeError: initializer for ctype 'char[]' must be a bytes or list or tuple, not str

以下情况也不起作用:

>>> ffi.new("char*", "bob")

它说:

TypeError: initializer for ctype 'char' must be a bytes of length 1, not str

1 个答案:

答案 0 :(得分:4)

o11c已经解决了这个问题:

明确选择一种编码,例如: "bob".encode('ascii')。这在Python 3中似乎是必要的。