我的函数中的参数太多 - Python

Neo*_*ile 6 python dll function

我试图在一个DLL中访问我的函数并将值作为整数传递给它.但我得到一个ValueError:

Procedure probably called with too many arguments (4 bytes in excess)
Run Code Online (Sandbox Code Playgroud)

我的python .py脚本如下:

func2.restype = c_int
func2.argtypes = [c_int]
func2(3)
Run Code Online (Sandbox Code Playgroud)

...

我在dll中的实际功能只是一个简单的功能,如:

int DLLfun2(int argtest) { return argtest + 1; };
Run Code Online (Sandbox Code Playgroud)

...

看起来像一个简单的问题,但我猜我错过了一些东西.请帮助.

干杯.

Céd*_*ien 4

看起来很奇怪,因为整数应该自动转换,但尝试使用func2(c_int(3))

编辑:根据ctypes doc,由于错误的调用约定(cdecl 而不是 stdcall),可能会引发此异常。但该函数仍然被调用(只是一种警告:s)

确保您在 dll 中进行了声明。

如果您使用 加载库windll,则它必须使用 stdcall 调用约定,否则,请使用该cdll模块。

  • @Nerds.Dont.Swear:尝试使用cdll来加载你的库,如果你的dll的调用约定是cdecl,它会工作得更好。 (2认同)