2

我有需要在 Java 中调用的 ac# dll。我看到有一种方法使用 jni 来调用 c++ dll。我该如何为 ac# dll 执行此操作。请帮助..我找不到任何好的材料

4

3 回答 3

0

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

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

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

MSIL

于 2013-10-22T20:23:41.367 回答
0

这里:-

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

  • 在 .NET 中实现的 Java 虚拟机
  • Java 类库的 .NET 实现
  • 支持 Java 和 .NET 互操作性的工具
于 2013-10-22T20:16:06.497 回答
0

检查这个:http ://www.javanet.com

如果您正在寻找快速简便的解决方案,那么 Javonet 应该适合您。它是 IKVM 的轻量级对应物,J-Integra 也可用作本地桥接器。

你所要做的就是:

  1. 添加 Javonet.jar 做你的项目调用
  2. 调用 Javonet.addReference("yourlib.dll")
  3. 使用你的 .NET 库,就像它几乎是 JAVA 包一样

样本:

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

该语法不是强类型的,其工作方式类似于反射,但可以让您以最快的速度访问任何自定义 .NET 代码、第三方库或 .NET 框架,因为在 .NET 端不需要进行任何更改。如果您需要,也可以实现自定义强类型包装器。

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

我会避免使用自定义 JNI 或 COM,除非您有很多时间并且只想学习,如果您需要快速可靠的解决方案,请使用第三方桥梁之一。

于 2013-10-29T10:03:40.503 回答