我的函数参数太多 - Python
我正在尝试在一个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
模块。