Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/python-2.7/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 2.7 调用dll函数在IronPython中工作,不';t在CPython3.4中工作给出;没有与给定参数匹配的方法;错误_Python 2.7_Clr_Ironpython_Python 3.4_Python.net - Fatal编程技术网

Python 2.7 调用dll函数在IronPython中工作,不';t在CPython3.4中工作给出;没有与给定参数匹配的方法;错误

Python 2.7 调用dll函数在IronPython中工作,不';t在CPython3.4中工作给出;没有与给定参数匹配的方法;错误,python-2.7,clr,ironpython,python-3.4,python.net,Python 2.7,Clr,Ironpython,Python 3.4,Python.net,对于一个项目,我需要在Python中包含一个DLL。我使用的是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)) Impl

对于一个项目,我需要在Python中包含一个DLL。我使用的是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
这是我用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))   
为了我的下一个项目,我想使用Python 3.4,而不是Ironpython。 我在python3.4和2.7中测试了这段代码,得到了以下错误:

No method matches given arguments
我100%确信错误来自AdviseStart函数。因为当我对IronPython使用相同的代码时,它是有效的。在Ironpython中,这些代码给出了我期望的输出:

Value: -74

此函数的目标是每次进行新的测量时,都将调用函数“test”。测量和调用的所有内容都在dll中。我是否可以在任何CPython版本中使用此函数?

64位版本中的整数参数存在一些问题。据我所知,这个问题已经解决了,但应该是在您使用的构建发布之后

尝试从github()获取源代码,并构建它。要构建和安装它,只需运行“pythonsetup.pyinstall”(或任何常用的setup.py命令)


如果仍然无法运行,您可以通过在setup.py中设置CONFIG=“debug”并重新生成来构建调试版本。然后,您将能够将visual studio调试器附加到python进程,并逐步执行python.net代码,以查看它找到的签名以及为什么它与调用它的参数不匹配。

我尝试了此解决方案,但运行python setup.py install会出现以下错误:File“C:\Python34\lib\site packages\pkg\u resources\u init\uyp”,第1025行,在add dists.sort(key=operator.attrgetter('hashcmp'),reverse=True)中类型错误:无序类型:str()