如何从Java调用.NET dll

我有这个代码来创建一个简单的.NET .dll 。 它只返回一个int

但是,它不适用于Java。

 using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace ReturnINT { public class ReturnINT { public static int RetornaInteiro () { try { int number = 2; return number; } catch (Exception) { return 1; } } } } 

如何在Java中调用该方法?

当我使用JNI我在java中有这个错误:

 Exception in thread "main" java.lang.UnsatisfiedLinkError: Dll.RetornaInteiro()V at Dll.RetornaInteiro(Native Method) at Dll.main(Dll.java:27) 

您可以直接调用它: http : //jni4net.sourceforge.net/

或者您可以将其称为可执行文件。

查看http://www.javonet.com 。 使用one-jar文件,您可以加载此dll并调用如下:

 Javonet.AddReference("your-lib.dll"); int result = Javonet.getType("ReturnINT").Invoke("RetornaInteiro"); 

Javonet将自动在.NET进程中加载​​您的库,并允许您访问其中包含的任何类和类型。 接下来,您可以获取类型并调用静态方法。 方法结果和参数在JAVA和.NET类型之间自动转换。 你可以传递像这样的字符串或bool参数

 Boolean arg1 = true; String arg2 = "test"; Javonet.getType("ReturnINT").Invoke("MethodWithArguments",arg1,arg2); 

它们将自动翻译。

此外,您还可以创建类型的实例,订阅事件,设置/获取属性和字段,处理exception甚至传递值类型参数。 查看文档以获取更多详细信息:

http://www.javonet.com/quick-start-guide/

PS:我是Javonet团队的成员。 因此,请随时向我询问有关本机集成和我们的产品的任何详细问题。