当我尝试加载这样的DLL时遇到问题:
String a = "C:\\Users\\ElteGps 022\\Documents\\NetBeansProjects\\JavaApplication1\\src\\lib\\EQ2008_Dll.dll";
String strDllFileName = m_strUserPath + "\\res\\EQ2008_Dll.dll";
String strEQ2008_Dll_Set_Path = m_strUserPath + "\\res\\EQ2008_Dll_Set.ini";
m_DllLibrary = (DllLibrary) Native.loadLibrary(a,DllLibrary.class);
我明白这一点:
Exception in thread "main" java.lang.UnsatisfiedLinkError: Unable to load library 'C:\Users\ElteGps 022\Documents\NetBeansProjects\JavaApplication1\src\lib\EQ2008_Dll.dll': Nie mo¿na odnaleæ okrelonego modu³
at com.sun.jna.NativeLibrary.loadLibrary(NativeLibrary.java:163)
at com.sun.jna.NativeLibrary.getInstance(NativeLibrary.java:236)
at com.sun.jna.Library$Handler.<init>(Library.java:140)
at com.sun.jna.Native.loadLibrary(Native.java:379)
at com.sun.jna.Native.loadLibrary(Native.java:364)
at javaapplication1.Fun.main(Fun.java:280)
我读了,我这样做了:
答案 0 :(得分:3)
图书馆搜索路径 搜索给定的库将扫描以下位置:
你可以 设置系统属性
jna.library.path
用户可自定义的路径jna.platform.library.path
特定于平台 路径- 在OSX上,
~/Library/Frameworks
,/Library/Frameworks
,和 我会搜索/System/Library/Frameworks
具有与所请求的名称对应的名称的框架。绝对 框架的路径也被接受,或者以框架结束 name(无“.framework”)或共享框架的完整路径 库(例如CoreServices.framework / CoreServices)。- Context类加载器类路径。部署本机库 可以安装在类路径下
${os-prefix}/LIBRARY_FILENAME
,在哪里${os-prefix}
是Platform.getNativeLibraryResourcePrefix()
返回的OS / Arch前缀。 如果捆绑在jar文件中,则将资源提取到jna.tmpdir
用于加载,后来被删除(但仅限于jna.nounpack
是假的或未设置)。jna.debug_load=true
以生成JNA 将其库搜索的步骤打印到控制台。
Native.loadLibrary无法使用完整路径,请尝试System.load 如果您不能使用它,您也可以通过设置java的环境变量来指定加载之前的目录
System.setProperty("jna.library.path", "C:\\Users\\ElteGps 022\\Documents\\NetBeansProjects\\JavaApplication1\\src\\lib");
但强烈建议不要这样做,因为它只适用于您的计算机