如何在Python中加载C# dll?
我需要在C#文件中添加一些额外的代码吗?(例如,在C++文件中导出)
我不想使用IronPython。我要导入一个模块到Python!
如何在Python中加载C# dll?
我需要在C#文件中添加一些额外的代码吗?(例如,在C++文件中导出)
我不想使用IronPython。我要导入一个模块到Python!
这个包Python for.NET和Python实现IronPython现在的工作方式相同。
C# DLL MyDll.dll
的示例:
import clr
clr.AddReference('MyDll')
from MyNamespace import MyClass
my_instance = MyClass()
请参见此帖子以获取更多详细信息。
pip3 install pythonnet
安装它。 - Felix[ComVisible(true)]
好的,IronPython是Python语言的一个.NET实现技术。当.NET 4.0到来时,该技术将使用.NET 4.0的DLR,因此IronPython将具有更多的动态性(这是一个词吗?)。(如果您是Python专家,则使用IronPython时会感觉更加自如)
因此,您可能会选择IronPython,如果这样做,您可以跳过COM可见部分。由于两者(C#,Iron Python)都在.NET下运行。
extern "C" {
__declspec(dllexport) void foo()
{
// here you could use managed and unmanaged code
Console.WriteLine("Hello, C# world...");
}
Python脚本:
from ctypes import cdll
lib = cdll.LoadLibrary("./CallCSharp.dll")
lib.foo()
这里可以找到更多使用ctypes的示例。
我强烈推荐阅读这篇博客:http://pragmateek.com/if-your-plumbing-doesnt-work-youre-just-not-using-enough-pipes/#more-1745
它还解决了当C++/CLI包装器调用另一个程序集中的代码时出现的问题(你会从Python脚本中得到类似于WindowsError: [Error -532462766] Windows Error 0xE0434352的错误信息)。