从 Python 调用 C# 库
假设您已尝试使用 IronPython 但遇到困难,您可以考虑从 Python 调用 C# 代码。如果您有一个包含 WPF 组件的 C# 库,例如以下示例,此方法可能特别有用:
`csharp
using System.Runtime.InteropServices;
using System.EnterpriseServices;
命名空间DataViewerLibrary
{
public interface ISimpleProvider { [DispIdAttribute(0)] void Start(); } [ComVisible(true)] [ClassInterface(ClassInterfaceType.None)] public class PlotData : ServicedComponent, ISimpleProvider { public void Start() { Plot plotter = new Plot(); plotter.ShowDialog(); } }
}
`
要从 Python 调用此 C# 代码,您可以使用 NuGet 包“UnmanagementExports”。通过安装此包,您可以导出 C# 代码,而无需创建 COM 层。以下是如何执行此操作的示例:
`csharp
使用 System;
使用 System.Collections.Generic;
使用 System.Linq;
使用 System.Runtime。 InteropServices;
使用 System.Text;
使用System.Threading.Tasks;
使用 RGiesecke.DllExport;
类测试
{
[DllExport("add", CallingConvention = CallingConvention.Cdecl)] public static int TestExport(int left, int right) { return left + right; }
}
`
导出后C# 代码,您可以加载 DLL 并调用公开的方法Python:
`python
import ctypes
a = ctypes.cdll.LoadLibrary(source)
a.add(3, 5)
`
这个方法提供了一种从 Python 代码调用 C# 库(包括使用 WPF 组件的库)的便捷方法。
以上是如何从Python调用C#库(包括WPF组件)?的详细内容。更多信息请关注PHP中文网其他相关文章!