我在日食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)
需要一些帮助。
答案 0 :(得分:1)
我正在使用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。
感谢您的支持。