相关疑难解决方法(0)

从Python调用Java

从python调用java的最佳方法是什么?(jython和RPC不是我的选择).

我听说过JCC:http://pypi.python.org/pypi/JCC/1.9 一个C++代码生成器,用于从C++/Python调用Java但是这需要编译每个可能的调用; 我更喜欢另一种解决方案.

我听说过JPype:http ://jpype.sourceforge.net/ tutorial:http://www.slideshare.net/onyame/mixing-python-and-java

import jpype 
jpype.startJVM(path to jvm.dll, "-ea") 
javaPackage = jpype.JPackage("JavaPackageName") 
javaClass = javaPackage.JavaClassName 
javaObject = javaClass() 
javaObject.JavaMethodName() 
jpype.shutdownJVM() 
Run Code Online (Sandbox Code Playgroud)

这看起来像我需要的.但是,最后一个版本是从2009年1月开始的,我看到人们无法编译JPype.

JPype是一个死的项目吗?

还有其他选择吗?

问候,大卫

python java

115
推荐指数
6
解决办法
15万
查看次数

如何在python中加载C#dll?

如何在python中加载ac#dll?

我是否必须在c#文件中添加一些额外的代码?(比如在c ++文件中导出)

我不想使用IronPython.我想将模块导入Python!

.net c# python cpython python.net

22
推荐指数
4
解决办法
5万
查看次数

使用RGiesecke.DllExport在C#DLL中没有函数

我正在尝试在C#中创建一个DLL,以便在其他几种语言中使用.我找到了RGiesecke的DllExport,但似乎没有用.它构建得很好并且创建了一个dll,但是当我在Dependency Walker中打开它时它没有显示任何函数,我的调用代码也找不到它们.

我创建了一个新的"类库"项目(VS 2013),然后从NuGet安装了"Unmanaged Exports(DllExport for .Net)".我需要任何项目设置吗?

这是我的代码.

using System;
using System.Collections.Generic;
using System.Text;
using RGiesecke.DllExport;

namespace ToolServiceDLL
{
    public class Class1
    {
      [DllExport("addUp", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
      public static double addUp(double num1, double num2)
      {
        return num1 + num2;
      }

      [DllExport("get5", CallingConvention = System.Runtime.InteropServices.CallingConvention.StdCall)]
      public static int get5()
      {
        return 5;
      }
    }
}
Run Code Online (Sandbox Code Playgroud)

c# dll unmanaged

7
推荐指数
1
解决办法
5481
查看次数

在Python和C#之间传递数据而不写入文件

我想在 Python 和 C# 之间传递二进制信息。我假设您可以打开一个标准的输入/输出通道并像文件一样读取和写入该通道,但是有很多移动部件,而且我不太了解 C#。我想做这种事情,但不写文件。

# python code
with open(DATA_PIPE_FILE_PATH, 'wb') as fid:
    fid.write(blob)
subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH)
with open(DATA_PIPE_FILE_PATH, 'rb') as fid:
    'Do stuff with the data'

// C# code
static int Main(string[] args){
    byte[] binaryData = File.ReadAllBytes(DataPipeFilePath);
    byte[] outputData;
    // Create outputData
    File.WriteAllBytes(outputData)
Run Code Online (Sandbox Code Playgroud)

我尝试了几种不同的使用标准输入/输出的方法,但我没有运气将它们匹配起来,就像我说的,有很多移动部件。我尝试过类似的事情

p = subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
p.stdin.write(blob)
p.stdin.close()
Run Code Online (Sandbox Code Playgroud)

或者

p = subprocess.Popen(C_SHARP_EXECUTABLE_FILE_PATH, stdin=subprocess.PIPE, stdout=subprocess.PIPE)
out, err = p.communicate(blob)
Run Code Online (Sandbox Code Playgroud)

在 python 一侧以及

TextReader tIn = Console.In;
TextWriter tOut = Console.Out;
String str = tIn.ReadToEnd();
//etc...
Run Code Online (Sandbox Code Playgroud)

以及其他一些在 C# 端不起作用的东西。我在某些事情上取得了一些成功,但我已经改变了太多,以至于我不记得什么是有效的。有人可以给我一些提示,告诉我哪些部分效果最好,或者这是否可能? …

c# python stdin stdout inter-process-communicat

5
推荐指数
1
解决办法
1万
查看次数

使用 pythonnet 从 python 调用 C# 代码

以下是 C# 代码。如何使用 pythonnet 从 Python 调用 NonGenericClass 内的 GenericMethod()?

namespace CSharpTestCode
{
    public interface Person
    {
    }

    public class Employee : Person
    {
    }

    public class TempGenericClass<T>
    {
    }

    public class NonGenericClass
    {
        public static T GenericMethod<T>(TempGenericClass<T> tempGeneric) where T : class, Person
        {
            return null;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

我尝试过的 Python 代码:

import clr
clr.AddReference(r'\Documents\visual studio 2015\Projects\SamplePythonApp\CSharpTestCode\bin\Debug\CSharpTestCode.dll')
from CSharpTestCode import *

genericMethod = NonGenericClass.GenericMethod(TempGenericClass[Employee]())
Run Code Online (Sandbox Code Playgroud)

我得到的错误:

Unhandled Exception: System.ArgumentException: GenericArguments[0], 'CSharpTestCode.TempGenericClass`1[CSharpTestCode.Employee]', on 'T GenericMethod[T](CSharpTestCode.TempGenericClass`1[T])' violates the constraint of type 'T'. …
Run Code Online (Sandbox Code Playgroud)

c# python interop python.net

5
推荐指数
1
解决办法
2311
查看次数