我是 Java 新手,在 google 和 stackoverflow 中搜索了这个问题,找到了一些帖子,但我仍然无法理解。
我想使用来自 Java 的 DLL 库 (C++) 方法。我为此目的使用 JNA。JNA 找到了我的库,但找不到我的方法:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Error looking up function 'LoadCurrentData': The specified procedure could not be found.
我的代码:
package javaapplication1;
import com.sun.jna.Library;
import com.sun.jna.Native;
import com.sun.jna.Platform;
import com.sun.jna.Pointer;
public class JavaApplication1 {
public interface LibPro extends Library {
LibPro INSTANCE = (LibPro) Native.loadLibrary(
(Platform.isWindows() ? "LibPro" : "LibProLinuxPort"), LibPro.class);
public short LoadCurrentData();
}
public static void main(String[] args) {
LibPro sdll = LibPro.INSTANCE;
sdll.LoadCurrentData(); // call of void function
}
}
我用 Depency Walker Tool 查看了我的 DLL,发现我的函数名有前缀和后缀 - 它看起来像_LoadCurrentData@0
感谢您的回复!
PS 我找到了很好的例子http://tutortutor.ca/cgi-bin/makepage.cgi?/articles/rjna(清单 6)。