任何人都可以分享如何从蟒蛇code调用一个简单的C#库(实际上它的WPF)工作的例子? (我一直在使用IronPython的尝试和有太多的麻烦,不支持CPython的图书馆我的Python code使用,所以我想到了周围试图其他方式和Python调用我的C#code)。
Anyone can share a working example on how to call a simple C# library (actually its WPF) from python code? (I have tried using IronPython and had too much trouble with unsupported CPython library my python code is using so I thought of trying the other way around and calling my C# code from Python).
下面是我用打例如:
using System.Runtime.InteropServices; using System.EnterpriseServices; namespace 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(); } } }绘图仪是一个WPF的窗户,绘制椭圆
Plotter is a WPF windows that plots an Ellipse
我不知道如何从我的蟒蛇都称呼这种code。有什么建议么?
I don't know how to call this code from my python all. Any suggestions?
推荐答案它实际上是pretty容易。只要使用的NuGet的UnmanagedExports包添加到您的.NET项目。见sites.google/site/robertgiesecke/Home/uploads/unmanagedexports了解详情。
It is actually pretty easy. Just use NuGet to add the "UnmanagedExports" package to your .Net project. See sites.google/site/robertgiesecke/Home/uploads/unmanagedexports for details.
您可以然后直接出口,而不必做一个COM层。下面是示例C#code:
You can then export directly, without having to do a COM layer. Here is the sample C# code:
using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using System.Threading.Tasks; using RGiesecke.DllExport; class Test { [DllExport("add", CallingConvention = CallingConvention.Cdecl)] public static int TestExport(int left, int right) { return left + right; } }您就可以加载DLL,并调用公开的方法在Python(适用于2.7)
You can then load the dll and call the exposed methods in Python (works for 2.7)
import ctypes a = ctypes.cdll.LoadLibrary(source) a.add(3, 5)更多推荐
Python调用一个C#库
发布评论