对于一个项目,我需要在 Python 中包含一个 DLL。我正在使用 CPython3.4 并包含我使用 pythonnet clr 模块(pythonnet-2.0.0.dev1-cp34-none-win_amd64.whl)的 dll。在 dll 中,我需要一个能够持续更新测量值的函数。该dll是用VB.net编写的,我需要的函数如下所示:
Public Sub AdviseStart(ByVal item As Integer, ByVal a As Action(Of Object)) Implements IConversation.AdviseStart
_parameterPoller.RegisterCallback(item, a)
End Sub
这是我用python编写的调用这个函数的代码:
import clr
clr.AddReference('dll name')
from dll import SetupMonitor
monitor = SetupMonitor(None, None, None)
# call to the dll function
# Everytime the measurement is changed the "test" function should be executed
monitor.AdviseStart(8, test)
def test(data):
print("Value: " + str(data))
为了我的进一步项目,我想使用 Python3.4 而不是 Ironpython。我在 python3.4 和 2.7 中测试了这段代码,我得到了这个错误:
No method matches given arguments
我 100% 确定错误来自 AdviseStart 函数。因为当我对 IronPython 使用相同的代码时,它可以工作。在 Ironpython 中,这段代码给出了我期望的输出:
Value: -74
该函数的目标是每次进行新的测量时都会调用函数“test”。测量和调用的一切都在 dll 中。无论如何我可以让这个函数在任何 CPython 版本中工作吗?