我需要在python中构建一个字符串并将其传递给包装的C lib。 C lib定义了函数:
unsigned char load(char const *FileName)
在.pyx文件中:
def test():
PATH = '/usr/lib/libnx.so'
PATH = <char*>PATH
load(PATH)
但我明白了:TypeError: expected bytes, str found
我已经尝试过对python字符串进行编码但得到了同样的错误。
答案 0 :(得分:4)
在Python中,str
对象不是C中的字节数组。为此,您必须对字符串进行编码。默认值为UTF-8编码,后向兼容ASCII。
以下是传递字节数组的两种方法:
PATH
定义为bytes
个对象:
PATH = b'/usr/lib/libnx.so'
或:PATH = 'usr/lib/libnx.so'.encode()
PATH
编码为字节数组:
load(PATH.encode())