我想调用的函数是:
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 section和the Loading Libraries section,以获取有关如何使用其他调用约定的详细信息。