如何从java程序中调用c#dll

时间:2013-10-22 20:11:33

标签: c# java dll

我有需要在Java中调用的ac #dll。我看到有一个方法使用jni来调用c ++ dll。我怎么能用ac#dll ...请帮助..我找不到任何好处这个材料

3 个答案:

答案 0 :(得分:0)

来自here: -

  

IKVM.NET是Mono和Microsoft .NET的Java实现   框架。它包括以下组件:

     
      
  • 以.NET实现的Java虚拟机
  •   
  • Java类库的.NET实现
  •   
  • 支持Java和.NET互操作性的工具
  •   

答案 1 :(得分:0)

您可以使用Java Native Interface。或者,您可以从C#代码创建COM程序集,并使用J-Interop来调用它。

如果您有C#dll源代码,您需要使用更好的方法,可以使用GrassHopper等工具将其转换为Java。

根据GrassHopper的主要功能说明,它可以将MSIL转换为Java咬代码。所以可以在没有c#dll来源的情况下使用

MSIL

答案 2 :(得分:0)

请检查:http://www.javonet.com

如果您寻求快速简便的解决方案,那么Javonet应该可以正常使用。它是IKVM的轻量级产品,J-Integra也可作为本机桥。

您所要做的就是:

  1. 添加Javonet.jar进行项目调用
  2. 调用Javonet.addReference(“yourlib.dll”)
  3. 使用您的.NET库,就像它几乎是JAVA包
  4. <强>示例:

    NObject obj = Javonet.New("yourDotNetClass");
    obj.invoke("YourMethod","arg1", 2);
    

    语法不是强类型的,并且像反射一样工作,但是您可以最快地访问任何自定义.NET代码,第三方库或.NET框架,因为.NET端不需要进行任何更改。如果需要,也可以实现自定义强类型包装器。

    我确实推荐这个桥,因为在我看来,最快速完成工作是最容易的,但其他原生桥也值得检查,因为这是这种情况的最佳方法。

    我会避免进入自定义JNI或COM,除非你有很多时间,而你只是想学习,如果你需要快速可靠的解决方案,请选择其中一个第三方网桥。