C# 如何从Java调用.NETDLL

C# 如何从Java调用.NETDLL,c#,java,dll,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 () {

我有这段代码来创建一个简单的.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)

您可以直接拨打:

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

也可以检查。使用一个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);
它们将被自动翻译

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


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

您甚至不清楚如何使用Java中的.NET库。。。您是否计划尝试使用JNI?可能重复和@Jon:Sun Java是否与COM对象互操作?微软的JVM做到了。@BenVoigt:我知道这并不令人愉快。当我使用java时,我有一个错误:线程“main”java.lang.unsatifiedlinkerror:Dll.returnaintero()V在Dll.returnaintero(本机方法)在Dll.main(Dll.java:27)@somazing-嗨,还没有,我们确实计划很快发布Linux支持@PrzemysławŁadyński这可以免费用于内部/本地主机网站吗?@StealthRT如果是非商业性的,那么可以。请申请学术许可证,并让我们知道您的项目细节。对于学术和私人非商业项目,我们授予免费许可证。