Python ctypes dll调用

Python ctypes dll调用,python,ctypes,Python,Ctypes,所以我基本上不熟悉python ctypes,我对C编程或任何非python语言知之甚少或一无所知……但我对dll协议和工作有着坚实的理解……所以我调用了一个dll文件来访问printf,然后使用它……我的结果很奇怪,并不像预期的那样……有人知道吗帮助解释这里发生了什么…这是我的代码 From ctypes import * msvcrt = cdll.msvcrt message_string = "Hello World! \n" msvcrt.printf("

所以我基本上不熟悉python ctypes,我对C编程或任何非python语言知之甚少或一无所知……但我对
dll
协议和工作有着坚实的理解……所以我调用了一个dll文件来访问
printf
,然后使用它……我的结果很奇怪,并不像预期的那样……有人知道吗帮助解释这里发生了什么…这是我的代码

From ctypes import *

msvcrt = cdll.msvcrt
message_string = "Hello World! \n"
msvcrt.printf("Testing: %s", message_string)
这是我的结果

1

原因是必须传递字节字符串(b“whatever”),而不是常规的python文本字符串

从ctypes导入*
msvcrt=cdll.msvcrt
message\u string=“你好,世界!\n”
msvcrt.printf(b“测试:%s”,消息字符串)
从ctypes导入*
msvcrt=cdll.msvcrt
消息\u string=b“你好,世界!\n”
msvcrt.printf(b“测试:%s”,消息字符串)

请注意,printf打印到真正的标准输出通道,而不是sys.stdout,因此这些示例仅在控制台提示符下工作,而不是在IDLE或PythonWin中工作:

您可能忘记了字符串前面的
b
,从而使其键入byte。