Для проекта мне нужно включить DLL в Python. Я использую CPython3.4 и для включения dll использую модуль pythonnet clr (pythonnet-2.0.0.dev1-cp34-none-win_amd64.whl). В 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
Это код, который я написал на питоне для вызова этой функции:
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
Цель этой функции состоит в том, что каждый раз, когда производится новое измерение, будет вызываться функция «тест». Все для измерения и вызова есть в dll. Могу ли я заставить эту функцию работать в любой версии CPython?