任何人都可以分享如何从python代码调用一个简单的C#库(实际上是它的WPF)的工作示例?(我已经尝试过使用IronPython,并且在我的python代码使用不受支持的CPython库时遇到了太多麻烦所以我想尝试反过来并从Python调用我的C#代码).
这是我正在玩的例子:
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();
}
}
}
Run Code Online (Sandbox Code Playgroud)
绘图仪是一个绘制椭圆的WPF窗口
我不知道如何从我的python中调用这段代码.有什么建议?
>>> import boilerpipe
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
File "C:\Anaconda\lib\site-packages\boilerpipe\__init__.py", line 10, in <module>
jpype.startJVM(jpype.getDefaultJVMPath(), "-Djava.class.path=%s" % os.pathsep.join(jars))
File "C:\Anaconda\lib\site-packages\jpype\_core.py", line 50, in startJVM
_jpype.startup(jvm, tuple(args), True)
RuntimeError: Unable to load DLL [C:\Program Files\Java\jre7\bin\client\jvm.dll], error = The specified module could not be found.
at native\common\include\jp_platform_win32.h:58
Run Code Online (Sandbox Code Playgroud)
尝试:重新安装jvm
>> import ctypes
>> import os
>> os.chdir(r"<path to Java bin client folder>")
>> ctypes.CDLL("jvm.dll")
Still unable to fix
Run Code Online (Sandbox Code Playgroud)
编辑:尝试下面的代码,仍然卡住:
from py4j.java_gateway import JavaGateway
gateway = JavaGateway()
它给出了与以前相同的错误.
我希望能够调用已经运行的Java jar中包含的某些方法(确保它将运行).我找到了像Jython这样的东西,但那些似乎只能访问Java的本机类等.