2

(我在 Windows 上。)

我在 Python 中有一个从 DLL 调用的回调函数(我使用ctypes模块)。一个参数的类型为va_list。有没有办法得到这个的内容?我不知道如何读取正确的内存位置(这里有描述)。

最好的是,如果有va_listPython 的解析器。或者一个 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指向格式字符串,apva_list.

4

0 回答 0