我试图打电话的功能是:
void FormatError (HRESULT hrError,PCHAR pszText);
来自使用windll的自定义dll。
c_p = c_char_p()
windll.thedll.FormatError(errcode, c_p)
结果:
ValueError: Procedure probably called with not enough arguments (4 bytes missing)
使用cdll将字节丢失计数器增加到12.上面的errcode是从同一个dll中的另一个函数返回的errercode。如何正确接听电话?
答案 0 :(得分:2)
至少,如果您正确设置argtypes
和restype
,则会出现更多描述性错误。
尝试这样做:
windll.thedll.FormatError.argtypes = [ctypes.HRESULT, ctypes.c_char_p]
windll.thedll.FormatError.restype = None
您使用错误的调用约定的可能性很大 - 请查看the Calling Functions section和the Loading Libraries section,了解有关如何使用其他调用约定的详细信息。
答案 1 :(得分:0)
您是否尝试过使用ctypes.HRESULT?
答案 2 :(得分:0)
实际上我认为你想使用ctypes提供的FormatError
http://docs.python.org/library/ctypes.html#ctypes.FormatError
ctypes.FormatError([代码])
仅限Windows:返回错误代码的文本说明。如果 没有指定错误代码,通过调用使用最后一个错误代码 Windows api函数GetLastError。