首页 > 解决方案 > 如何将 ulong 类型参数从 Python 传递给 C# 函数?

问题描述

从 Python 中,我正在调用 dll 中的 C# 函数。这是由“python.net”完成的。大多数函数都可以在 Python 中正确调用。但是,由于参数的数据类型,我有一个函数有问题。

在 C# 中,有一个函数采用 unsigned long 类型:

bool SetValueAsInt64U(ulong rValue);

在 Python 中,我用

SetValueAsInt64U(22);

这给出了错误消息: TypeError: No method matches given arguments for SetValueAsInt64U:(<class 'int'>)

我还尝试使用 ctypes,并调用如下函数:

SetValueAsInt64U(c_ulong(22));

这会产生类似的错误:TypeError: No method matches given arguments for SetValueAsInt64U: (<class 'ctypes.c_ulong'>)

有关更多信息,我正在显示正确的呼叫。在 C# 中,还有另一个带有签名参数的函数:

bool SetValueAsInt64(long rValue)

在 Python 中,我可以在没有任何错误消息的情况下调用该函数,例如:

SetValueAsInt64(-5);

所以问题是如何使用 Python 中的无符号参数类型调用 C# 函数?

标签: pythonc#python.net

解决方案


在这种情况下我要做的就是对该方法进行重载以获取一个 int 参数,如果它达到最大 int 范围 2,147,483,647,python 会将其解析为 ulong。


推荐阅读