我的函数参数太多 - Python

6 投票
1 回答
2776 浏览
提问于 2025-04-17 02:16

我正在尝试在一个dll文件中访问我的函数,并以整数的形式传递值进去。但是我遇到了一个值错误,错误信息如下:

Procedure probably called with too many arguments (4 bytes in excess)

我的Python脚本如下:

func2.restype = c_int
func2.argtypes = [c_int]
func2(3)

...

我在dll中的实际函数其实很简单,就像这样:

int DLLfun2(int argtest) { return argtest + 1; };

...

看起来这是个简单的问题,但我觉得我可能漏掉了什么。请帮帮我。

谢谢。

1 个回答

4

看起来有点奇怪,因为整数应该会自动转换,但你可以试试用 func2(c_int(3)) 这个方式。

编辑:根据 ctypes 的文档,这个异常可能是因为调用约定不对(用的是 cdecl 而不是 stdcall)。不过函数还是会被调用,只是会有点警告 :s

确保你在 dll 中的声明是正确的。

如果你用 windll 加载你的库,它必须使用 stdcall 调用约定;否则,就要用 cdll 模块。

撰写回答