2

我有一个 .dll 文件(带有“Interop.”前缀),其中包含一个用 C# 编写的库。库中包含一个类、几个枚举、几个接口和几个委托。(通过使用 JetBrains dotPeek 反编译 .dll 来观察)

在此处查看 dll 结构: Dll结构

我需要使用纯 Python 来访问类中的方法。我努力了:

from ctypes import *
name = "Interop.HTBRAILLEDRIVERSERVERLib.dll"
mydll = cdll.LoadLibrary(name)

但是,尝试调用“HtBrailleDriverClass”类中包含的任何方法会导致“AttributeError:未找到函数'initialize'”。我还尝试从它们的序数索引中访问它们:

print mydll[1]

但是,这会给出错误“AttributeError:未找到函数序数 1”。

是否有人能够阐明为什么我无法访问此 .dll 中的类以及为什么我也无法访问任何方法?

请记住,我必须使用纯 Python。

4

1 回答 1

3

您可以使用 python.net 访问它

import clr,sys
sys.path.append("path of your dll")
clr.AddReference("YourDllName")
import YourDllName

然后尝试打印您班级成员的任何值,例如

print YourDllName.ClassName.Member

从你的 python 脚本

注意:您需要将 clr.pyd 和 python.runtime.dll 放入您的

Python27/Dlls 文件夹

如果您不想附加 dll 路径,请将 dll 放入 python2.x/Lib/site-packages 文件夹中。然后你也可以避免第二行 - sys.path.append() 。

于 2015-04-08T05:41:50.460 回答