jna 加载库

Rol*_*d85 2 java dll load jna

我在用 jna 加载 dll 时遇到问题。虽然我可以在 eclipse 中调试代码,但当我将它导出并作为 jar 文件运行时,我得到一个异常:

java.lang.UnsatisfiedLinkError:无法加载库“SiUSBXp”

当我将它作为 jar 文件运行时,为什么它找不到我的 dll 有什么想法吗?

谢谢!!!!

public interface SiUSBXp extends StdCallLibrary {
    byte SI_GetNumDevices(IntByReference numdevices);
    byte SI_GetProductString( int deviceNum, byte[] productString, int options );
    byte SI_Open(IntByReference numdevices);
}

static SiUSBXp INSTANCE;

public static void main(String[] args) {
    System.setProperty("jna.library.path","SiUSBXp.dll");
    HashMap<String, StdCallFunctionMapper> optionMap = new HashMap<String, StdCallFunctionMapper>();
    StdCallFunctionMapper myMapper = new StdCallFunctionMapper();
    optionMap.put(Library.OPTION_FUNCTION_MAPPER, myMapper);
    INSTANCE = (SiUSBXp) Native.loadLibrary("SiUSBXp", SiUSBXp.class, optionMap);
}
Run Code Online (Sandbox Code Playgroud)

- - - - - - - - - 编辑 - - - - - - - - - - -

dll 与 jar 位于同一文件夹中

------------------ 编辑 2 ---------------------

我刚刚尝试在 windows xp 中运行它并且它可以工作..但它不在 windows 7(64 位)中

------------------ 编辑 3 --------------------- 我已经解决了这个问题......这是由于安装了java版本......我将它们全部删除,然后只安装了x86版本的java......之后它完美地工作

cha*_*nce 5

将 DLL 放入“当前文件夹”或系统变量 PATH,或-Djna.library.path=(path to the dll)用作 VM 开关而不是硬编码。