如何解决如何使用JNA
我正在尝试使用JNA在Java(java 11)中导入.dll。我自己编译了dll(使用mingw64),验证它们是64位的,并确保所有依赖项(即链接的dll)在同一路径中都可用。但是,我仍然收到以下错误消息。我在做什么错了?
java.lang.UnsatisfiedLinkError: Unable to load library 'libClp-0':
The specified module could not be found.
The specified module could not be found.
The specified module could not be found.
Native library (win32-x86-64/libClp-0.dll) not found in resource path
dll的COIN-OR's CLP解算器。如前所述,我自己使用MSYS2(64位)和COIN-OR的coinbrewscript对其进行了编译。随后,我使用dependencies来验证是否满足所有dll依赖项(也必须从引用的C:\ msys64 \ mingw64 \ bin中复制一些dll)。
在Eclipse中,我的文件夹结构如下:
src
| |clpsolver.model
| | |CLPDLLInterface.java
lib
| x64
| all dlls
在CLPDLLInterface.java文件中,我将JNA用作:
String libSubDir = "lib" + File.separator + "x64";
String dir = JNAPathHelper.addPluginRootToNativePath(CLPDLLInterface.class,libSubDir);
if (dir == null) {
System.loadLibrary("libClp-0.dll");
}
Native.register("libClp-0.dll");
}
libClp-0.dll依赖于其他dll,依此类推。我试图加载除su dependencies以外的system32 dll之外没有其他依赖项的dll,尽管即使这样也不会加载。为了使这项工作有效,我应该改变什么?
已安装Microsoft c ++可再发行组件,并且所有dll都是可执行文件,请参见this stackoverflow question
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。