c# - 使用 Python 访问 C# 库中的方法 - Interop .dll 文件

标签 c# python .net dll python.net

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

在这里查看dll结构: DllStructure

我需要使用纯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/

相关文章:

c# - 如何让 ExcelDNA 与 R.Net 一起工作

c# - WebApi2 OData返回自定义错误对象

Python 字典未返回所有项目

c# - 数据绑定(bind) Winforms 文本框

c# - 从多线程调用静态方法,我们需要使用同步机制吗?

c# - 如何允许用户调整控件的大小

python - 从另一个数据帧更新数据帧不起作用

python - Pandas - 将一列中的整数映射到新列中的字符串

.net - 如何在 .NET 4.5 上使用 .NET 4.0 应用程序?

c# - SynchronizationContext 和 ASP.NET Web API 扩展点