我在 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': 在资源路径中找不到 native 库 (win32-x86/xxx.dll)
需要一些帮助。
最佳答案
我正在使用 jna-4.2.1。
我下载了源码并调试。
我发现 JNA 引入了基于平台的前缀。
String libname = name.startsWith("/") ?名称:NativeLibrary.mapSharedLibraryName(名称);
String resourcePath = name.startsWith("/") ?名称:Platform.RESOURCE_PREFIX+ "/"+ 库名;
所以我将我的 xxx.dll 包含在 win32-x86 文件夹中。
但 Native.loadLibrary(xxx.dll,...)
仍应按其原始名称引用 dll。
感谢支持
关于java - 无法加载库 'xxx.dll' : Native library (win32-x86/xxx. dll) 在资源路径中找不到 (JNA + DLL + eclipse rcp),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34917065/