我有一大堆.dll文件,这些文件的类是用来控制通过以太网连接到桌面的外部设备。我想将这些类导入python并使用它们的成员函数/变量等来控制设备。在
我研究了许多选项,包括:
-ctypes(似乎对函数有效,但对类无效)。这里是“DotNet”\Aerotech.Ensemble.dll是我的dll库,而“Network”是该库中一个具有成员函数“Connect”的类。库已加载,但我无法访问该类。。。在>>> from ctypes import *
>>> lib = cdll.LoadLibrary('DotNet\Aerotech.Ensemble.dll')
>>> lib.Network.Connect()
Traceback (most recent call last):
File "", line 1, in
File "C:\Python26\lib\ctypes\__init__.py", line 366, in __getattr__
func = self.__getitem__(name)
File "C:\Python26\lib\ctypes\__init__.py", line 371, in __getitem__
func = self._FuncPtr((name_or_ordinal, self))
AttributeError: function 'Network' not found
-IronPython/Python for.Net,但它们似乎是完全不同的语言,我希望能够从一个地方(Python)完成所有事情。在
-喝。SWIG文档似乎表明它可以处理导入类,但似乎也需要C++代码和头文件(我不需要)被包装为Python模块。在
我是一个初学者,在这里相当迷路,所以任何帮助都是感激的!在
编辑:
@SvenMarnach:我看了一下IronPython,可以用dll文件来处理它,但是我想用Python来实现,因为我已经用这种语言做了很多事情。我想将这些dll函数或类或其他任何东西集成到现有的python程序中。在
然而,在让IronPython正常工作的过程中,我偶然发现了accross Python for .NET,它声称能够将.Net感知安装到现有的python安装中……如果我在我下载python for.Net文件的目录中使用它,它就可以工作了(即我可以访问dll文件并控制我的设备),但是如果我在其他目录中尝试(记住要附加python.net直飞搜索路径),则出现错误ImportError: dynamic module does not define init function (initclr)