【发布时间】:2014-06-10 21:26:13
【问题描述】:
我正在尝试访问我在 java 代码中创建的 VB .NET dll 方法。 我正在尝试使用 JNA 来实现这一目标。
这是我的 Java 代码。
Hello.java(调用 dll 方法)
import com.sun.jna.Native;
public class Hello {
public static void main(String[] args) {
String myPath = System.getProperty("user.dir");
System.setProperty("java.library.path", myPath);
NativeInterface nInterface = (NativeInterface) Native.loadLibrary(
"SampleDLLProject", NativeInterface.class);
nInterface.HelloWorld();
}
}
这是界面 NativeInterface.java
import com.sun.jna.*;
public interface NativeInterface extends com.sun.jna.Library {
public void HelloWorld();
}
我面临的错误是:
线程“main”中的异常 java.lang.UnsatisfiedLinkError:查找函数“HelloWorld”时出错:找不到指定的过程。 在 com.sun.jna.Function.(Function.java:179) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:345) 在 com.sun.jna.NativeLibrary.getFunction(NativeLibrary.java:325) 在 com.sun.jna.Library$Handler.invoke(Library.java:203) 在 $Proxy0.HelloWorld(未知来源) 在 Hello.main(Hello.java:10)
我还使用 ildasm 检查了 dll 是否存在任何类型的差异。
dll中的方法名和Hello.java中的方法名没有区别。
有趣的是,我尝试测试 windows dll msvcrt.dll 的 puts() 方法的代码,它工作得非常好。所以问题出在 DOT NET dll 上。 请帮忙!
【问题讨论】: