【问题标题】:TypeError calling .NET method using Pythonnet使用 Pythonnet 调用 .NET 方法的 TypeError
【发布时间】:2021-01-04 14:14:39
【问题描述】:

我在从链接到 eBUS SDK 的 .NET dll 调用方法时遇到问题。代码的最终目标是使用 python 与 GigE 连接的相机进行通信。

在 C# 中,方法是: public void SetStreamDestination( string aIPAddress, ushort aDataPort ) ,是 PvDeviceGEV 类的一部分。

在 Python 中,我使用 pythonnet 来导入 dll。然后我正在使用此代码:

from PvDotNet import PvDeviceGEV
from PvDotNet import PvStreamGEV

DeviceGEV = PvDeviceGEV()
Stream = PvStreamGEV()

LocalIP = Stream.LocalIPAddress
LocalPort = Stream.LocalPort
DeviceGEV.SetStreamDestination(LocalIP, LocalPort)

这会导致错误:

TypeError: No method matches given arguments for SetStreamDestination: (<class 'str'>, <class 'int>)

看到 IPAddress 和 aDataPort 的类型应该分别是 string 和 UInt16 ,我不明白这个错误。我已经能够从这个类中调用其他方法。这是我第一次尝试将函数从另一种语言导入 Python。任何理解或纠正此错误的帮助将不胜感激。

【问题讨论】:

  • 我刚刚做了一个快速测试,我似乎可以从 Python 调用一个方法,在 C# 中定义为public void Test(string str, System.UInt16 u16)。你能在某处分享 .NET dll 以便我看一下吗?
  • 下载eBUS播放器后可以在常用文件中找到DLL。 pleora.com/products/ebus-software/ebus-player 明智的许可我不确定我是否可以在此之外共享 DLL

标签: python c# .net python.net gige-sdk


【解决方案1】:

我通过更改解决了这个问题 SetStreamDestination(LocalIP, LocalPort)SetStreamDestination(LocalIP, UInt16(LocalPort))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-07
    • 2014-08-05
    • 2021-03-24
    相关资源
    最近更新 更多