我有这个代码来创建一个简单的.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)
答案 0 :(得分:4)
您可以直接致电:http://jni4net.sourceforge.net/
或者您可以将其称为可执行文件。
答案 1 :(得分:4)
同时检查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);
他们将自动翻译。
此外,您还可以创建类型的实例,订阅事件,设置/获取属性和字段,处理异常甚至传递值类型参数。查看文档以获取更多详细信息:
http://www.javonet.com/quick-start-guide/
PS:我是Javonet团队的成员。因此,请随时向我询问有关本机集成和我们的产品的任何详细问题。