我想调用的函数是:

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。如何正确拨打电话?

最佳答案

至少,如果正确设置了 argtypes restype ,您将获得更多的描述性错误。

尝试以这种方式进行操作:

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

您很有可能使用了错误的调用约定-请查看the Calling Functions sectionthe Loading Libraries section,以获取有关如何使用其他调用约定的详细信息。

10-04 13:45