问题描述
我正在尝试使用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 (将#修改为@)