python - 将单个字符/多个字符用户输入从 python 函数传递到 C++ 函数

标签 python function dll input

我有一个 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/

相关文章:

windows - 如何从 dll 中获取应用程序名称?

c# - 调试c++ dll时找不到调试信息

python - urllib2 是否支持线程到需要基本身份验证的服务器?

python - 为什么 Python 3.x 有不寻常的向下(整数)除法行为?

python - 如何告诉 Matplotlib 创建第二个(新)图,然后在旧图上绘制?

用不同数量的参数重载的函数

javascript - 从逗号分隔的字符串javascript创建html表

c++ - 模板内的编辑列表不保存

python - django.db.utils.IntegrityError : null value in column "id" violates not-null constraint

c++ - 混合使用不同编译器版本构建的二进制文件