我有一个 .dll 文件(带有“Interop.”前缀),其中包含用 C# 编写的库。库中有一个类、几个枚举、几个接口(interface)和几个委托(delegate)。 (通过JetBrains dotPeek反编译.dll观察到)
在这里查看dll结构:
我需要使用纯Python来访问类中的方法。我尝试过:
from ctypes import *
name = "Interop.HTBRAILLEDRIVERSERVERLib.dll"
mydll = cdll.LoadLibrary(name)
但是,尝试调用“HtBrailleDriverClass”类中包含的任何方法都会导致“AttributeError:找不到函数'initialize'”。我还尝试从它们的序数索引访问它们:
print mydll[1]
但是这会出现错误“AttributeError:未找到函数序号 1”。
有谁能够解释为什么我无法访问此 .dll 中的类以及为什么我也无法访问任何方法?
请记住我必须使用纯Python。
最佳答案
您可以使用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() 。
关于c# - 使用 Python 访问 C# 库中的方法 - Interop .dll 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27333480/