无法加载库 'xxx.dll':在资源路径 (JNA + DLL + eclipse rcp) 中找不到本机库 (win32-x86/xxx.dll)
Unable to load library 'xxx.dll': Native library (win32-x86/xxx.dll) not found in resource path (JNA + DLL + eclipse rcp)
我在 eclipse RCP 项目中使用 JNA。
我正在关注片段样式。
fragment:`
`Bundle-SymbolicName: a.b.c.d.win32.win32.x86`
`Bundle-ClassPath: lib/jna-4.1.0.jar, . `
`Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))`
`Bundle-NativeCode: xxx.dll;processor=x86; osname=win32,*`
`Fragment-Host: a.b.c.d
xxx.dll直接在a.b.c.d.win32.win32.x86片段项目里面。
host:
Bundle-SymbolicName: a.b.c.d
错误我得到:
线程 "main" java.lang.UnsatisfiedLinkError 中的异常:无法加载库 'xxx.dll':在资源路径
中找不到本机库 (win32-x86/xxx.dll)
需要一些帮助。
我正在使用 jna-4.2.1。
我下载了源码并调试。
我发现 JNA 引入了一个基于平台的前缀。
String libname = name.startsWith("/") ? name : NativeLibrary.mapSharedLibraryName(name);
String resourcePath = name.startsWith("/") ? name : Platform.RESOURCE_PREFIX+ "/" + libname;
所以我将 xxx.dll 包含在 win32-x86 文件夹中。
但仍然 Native.loadLibrary(xxx.dll,...)
应该按其原始名称引用 dll。
感谢支持
我在 eclipse RCP 项目中使用 JNA。
我正在关注片段样式。
fragment:`
`Bundle-SymbolicName: a.b.c.d.win32.win32.x86`
`Bundle-ClassPath: lib/jna-4.1.0.jar, . `
`Eclipse-PlatformFilter: (& (osgi.ws=win32) (osgi.os=win32) (osgi.arch=x86))`
`Bundle-NativeCode: xxx.dll;processor=x86; osname=win32,*`
`Fragment-Host: a.b.c.d
xxx.dll直接在a.b.c.d.win32.win32.x86片段项目里面。
host:
Bundle-SymbolicName: a.b.c.d
错误我得到: 线程 "main" java.lang.UnsatisfiedLinkError 中的异常:无法加载库 'xxx.dll':在资源路径
中找不到本机库 (win32-x86/xxx.dll)需要一些帮助。
我正在使用 jna-4.2.1。
我下载了源码并调试。
我发现 JNA 引入了一个基于平台的前缀。
String libname = name.startsWith("/") ? name : NativeLibrary.mapSharedLibraryName(name);
String resourcePath = name.startsWith("/") ? name : Platform.RESOURCE_PREFIX+ "/" + libname;
所以我将 xxx.dll 包含在 win32-x86 文件夹中。
但仍然 Native.loadLibrary(xxx.dll,...)
应该按其原始名称引用 dll。
感谢支持