如何在java中从c#dll调用方法?
我在VisualStudio2008中创建了一个c#dll c#dll的内容如下所示:如何在java中从c#dll调用方法?,java,dll,Java,Dll,我在VisualStudio2008中创建了一个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)
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;
}
}
}
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);}
}
}
通过java,我使用
System.loadLibrary(“你好”)强>
java代码如下所示:
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;
}
}
}
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方法我认为在Java中,如果不使用JNI包装器(或者至少是一些在后台转换为JNI的库),就无法调用本机扩展。您是否尝试过中提到的框架/建议?我认为,如果不使用JNI包装器(或者至少是一些在后台转换为JNI的库),您无法在Java中调用本机扩展。您是否尝试过中提到的框架/建议?您不能在Java中直接调用C#dll。有一个变通办法。你必须首先为C++代码编写C++托管类,然后创建一个C++的DLL,并在java中使用它。p> 在Java中不能直接调用C#dll。有一个变通办法。你必须首先为C++代码编写C++托管类,然后创建一个C++的DLL,并在java中使用它。p>
你看过那条线了吗?这里有一个免费和一个付费的图书馆,你可能想去看看。另外,如果你想走纯JNI的路,谷歌JNI教程就可以开始了?这里有一个免费和一个付费的图书馆,你可能想去看看。另外,如果你想走纯JNI之路,谷歌JNI教程就可以开始了