如何从 Java 调用 .NET dll

soa*_*ing 5 c# java 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;
            }
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

如何从 Java 内部调用该方法?

当我使用 JNI 时,我在 java 中遇到此错误:

Exception in thread "main" java.lang.UnsatisfiedLinkError: Dll.RetornaInteiro()V
      at Dll.RetornaInteiro(Native Method)
      at Dll.main(Dll.java:27)
Run Code Online (Sandbox Code Playgroud)

Prz*_*ski 6

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

Javonet.AddReference("your-lib.dll");
int result = Javonet.getType("ReturnINT").Invoke("RetornaInteiro");
Run Code Online (Sandbox Code Playgroud)

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

Boolean arg1 = true;
String arg2 = "test";
Javonet.getType("ReturnINT").Invoke("MethodWithArguments",arg1,arg2);
Run Code Online (Sandbox Code Playgroud)

并且它们将被自动翻译。

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

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

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


Jir*_*ika 5

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

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