我在visual studio 2008中创建了一个c#dll
c#dll的内容如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace hello
{
public class Class1
{
public static double addUp(double number, double Number)
{
return number + Number;
}
public static double minus(double number, double Number)
{
return number - Number;
}
}
}
并通过java我已经使用
加载了hello.dll的System.loadLibrary("你好&#34);
java代码如下:
package pkgnew;
import javax.swing.JOptionPane;
public class check
{
public static native double addUp(double number,double Number);
static
{
try
{
System.loadLibrary("hello");
System.out.println("SUCCESS");
}catch(Exception ex){ JOptionPane.showMessageDialog(null,"Required DLLs Not Found\n"+ex.getCause(),"Error Loading Libraries", JOptionPane.ERROR_MESSAGE);}
}
public static void main(String[] args)
{
new check().getval();
}
public void getval() {
try
{
double g=this.addUp(52.2, 51.3);
}catch(Exception y){System.out.println("ERROR IS:"+y);}
}
}
但问题是我的输出为:
输出
SUCCESS
Exception in thread "main" java.lang.UnsatisfiedLinkError: pkgnew.check.addUp(DD)D
at pkgnew.check.addUp(Native Method)
at pkgnew.check.getval(check.java:35)
at pkgnew.check.main(check.java:29)
Java Result: 1
任何人都可以告诉我为什么我会收到此错误....以及为什么我无法调用dll方法
答案 0 :(得分:1)
我不认为你可以在不使用JNI包装器的情况下调用Java中的本机扩展(或者至少有一些库转换为JNI)。您是否尝试过this thread中提到的框架/建议?
答案 1 :(得分:0)
您无法直接在Java中调用C#dll。有一个解决方法。您必须首先为C#代码编写C ++托管类,然后创建一个C ++ DLL并在java中使用它。