如何调入从Java .NET的DLL(How to call into .NET dll from

2019-06-24 18:14发布

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

Answer 1:

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

或者你可以把它作为一个可执行文件。



Answer 2:

检查http://www.javonet.com为好。 随着一个jar文件,你可以加载这个DLL,并调用如下:

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

Javonet会自动加载你的库在.NET过程,让您使用任何类和类型都包含在其中。 接下来,你可以得到你的类型,并调用静态方法。 法结果和论点是Java和.NET类型之间的自动转换。 您可以通过例如字符串或布尔参数一样,

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

他们将被自动翻译。

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

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

PS:我Javonet团队的一员。 因此,随时问我关于本机集成和我们的产品的任何具体问题。



文章来源: How to call into .NET dll from Java
标签: c# java dll