Python的ctypes和没有足够的参数(4字节丢失)

我试图调用的函数是:

void FormatError (HRESULT hrError,PCHAR pszText); 

从一个自定义的DLL使用windll。

 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。 我如何接听电话?

Solutions Collecting From Web of "Python的ctypes和没有足够的参数(4字节丢失)"

至少,如果你正确地设置了argtypesrestype ,你会得到更多的描述性错误。

试试这样做:

 windll.thedll.FormatError.argtypes = [ctypes.HRESULT, ctypes.c_char_p] windll.thedll.FormatError.restype = None 

还有一个很好的机会使用了错误的调用约定 – 请查看调用函数部分和加载库部分 ,了解有关如何使用其他调用约定的详细信息。

你有没有试过使用ctypes.HRESULT ?

其实我想你想使用ctypes提供的FormatError

http://docs.python.org/library/ctypes.html#ctypes.FormatError

ctypes.FormatError([代码])

仅Windows:返回错误代码的文本说明。 如果未指定错误代码,则通过调用Windows API函数GetLastError来使用上一个错误代码。