【问题标题】:Too many arguments in my function - Python我的函数中有太多参数 - Python
【发布时间】:2011-09-14 09:11:39
【问题描述】:

我正在尝试在 dll 中访问我的函数并在其中以整数形式传递值。但我得到一个 ValueError 为:

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

我的 python .py 脚本如下:

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

...

我在 dll 中的实际函数只是一个简单的函数,例如:

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

...

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

干杯。

【问题讨论】:

    标签: python function dll


    【解决方案1】:

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

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

    请务必在您的 dll 中声明。

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

    【讨论】:

    • @Nerds.Dont.Swear :查看我在编辑中提到的您在 dll 中使用的调用约定 (cdecl/stdcall)。
    • 就我而言,我使用windll 来加载我的库。它与我尝试调用函数的方式有何不同?
    • @Nerds.Dont.Swear : 尝试使用 cdll 加载你的库,如果你的 dll 的调用约定是 cdecl,它会更好。
    猜你喜欢
    • 2015-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-06
    • 1970-01-01
    • 2019-01-16
    • 1970-01-01
    相关资源
    最近更新 更多