我有一个 C++ .dll 函数,我通过 python 3.2 访问该函数,语法如下:
int Create(char argID)
我正在尝试使用 python 访问这个函数。我可以访问它,但我很困惑为什么每当我尝试向函数传递参数时它都会告诉“错误类型”。 Python 脚本:
Create.argtypes = [c_char]
Create.restype = c_int
ID = c_char
ID = input("Enter ID:")
Create(ID) #ctypes.ArgumentError: argument 1: <class 'TypeError'>: wrong type
不确定我哪里出错了,或者是否有不同的方法来传递用户输入中的一个或多个字符?请帮忙。
干杯。
最佳答案
c_char 是一个单字节值,而不是 Unicode 字符串。设置 ID = bytes(ID, 'utf8')[0]
(或使用与 'utf8' 不同的 8 位字符映射,例如 'latin-1')。然后您可以调用Create(ID)
。
顺便说一句,将 ID 分配给 c_char 只会为您提供对 c_char 的另一个引用,然后您立即将 ID 重新分配给从 input
返回的字符串。我唯一一次看到这种情况是当人们使用 ctypes 时。就像大脑陷入静态打字模式一样。
关于python - 将单个字符/多个字符用户输入从 python 函数传递到 C++ 函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7442116/