(我在 Windows 上。)
我在 Python 中有一个从 DLL 调用的回调函数(我使用ctypes模块)。一个参数的类型为va_list
。有没有办法得到这个的内容?我不知道如何读取正确的内存位置(这里有描述)。
最好的是,如果有va_list
Python 的解析器。或者一个 DLL,其中包含用于获取va_list
.
有谁知道解决方案?
我找到了一个解决方案:
您可以使用 ctypes 调用标准 C 函数,例如接受 va_list 参数的 vsprintf。(格式化打印是我想要做的)。
这是我调用它的代码:
bufferString = ctypes.create_string_buffer(4096)
ctypes.cdll.msvcrt.vsprintf(bufferString, fmt.raw, ctypes.cast(ap, ctypes.c_void_p))
print ctypes.cast(bufferString, ctypes.c_char_p)
fmt.raw
指向格式字符串,ap
是va_list
.