【发布时间】:2011-07-25 10:29:14
【问题描述】:
我在使用 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);
}
------------------ 编辑 ----------------------
dll 与 jar 位于同一文件夹中
------------------ 编辑 2 ---------
我刚刚尝试在 windows xp 中运行它,它可以工作.. 但它不能在 windows 7(64 位)中运行
------------------ 编辑 3 --------------------- 我已经解决了这个问题......这是由于安装了java版本......我把它们都删除了,然后只安装了x86版本的java......之后它就完美运行了
【问题讨论】:
-
从 jar 运行时 SiUSBXp.dll 在哪里?