比较来自世界各地的卖家的域名和 IT 服务价格

如何解决问题 "java.lang.UnsatisfiedLinkError: 无法找到依赖库" 没有 System32?

我正在研究这个项目 Java 在 Eclipse, 它使用库 C++ OpenCV 穿过 JNI. 使用一些图像处理算法使用 OpenCV 在原生,我想用它们 java, 使用 JNI.

我建立了一个项目 C++ DLL 参考 Java, 结果,文件结果
MyLibrary.dll

. 我编制了 OpenCV 与编译器 GCC 6.3 并编制代码 C++ 使用相同的编译器 GCC 6.3 在 Eclipse CDT /与接头一起 MinGW/. 我还检查了是否存在依赖关系的问题
http://www.dependencywalker.com/
. 我仍然没有错误。

之后,我试图从代码下载库 Java 通过以下方式:

System.loadLibrary/"MyLibrary"/


我把方式设置了
-Djava.library.path=path\to\MyLibrary

我被说服了 , 什么 JVM 他知道自己的图书馆的地址。 我还添加了必要的库。 OpenCV 靠近
MyLibrary.dll

.

但是,我收到以下错误:


Exception in thread "main" java.lang.UnsatisfiedLinkError: MyLibrary.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load/Native Method/
at java.lang.ClassLoader.loadLibrary0/Unknown Source/
at java.lang.ClassLoader.loadLibrary/Unknown Source/
at java.lang.Runtime.loadLibrary0/Unknown Source/
at java.lang.System.loadLibrary/Unknown Source/
...


然后,在移动依赖库时,问题会消失。 OpenCV 在文件夹中
System32

.

我的问题如下:如何解决这个问题,

没有移动

需要文件 DLL 在文件夹中
System32

?
已邀请:

八刀丁二

赞同来自:

解决此问题的最佳做法是通过调用库下载方法独立加载受相关库:


System.loadLibrary/"opencv_1"/;
System.loadLibrary/"opencv_2"/;
...


下载依赖库后,您可以安全地下载自己的文件。 dll 以同样的方式:


System.loadLibrary/"MyFile"/;


它必须消除错误
can't file dependent libraries

.

再绕过一个旁路 /没有更好的做法/ 包含复制依赖文件 dll /在你的情况下 opencv DLL/ 在文件夹中 System32.

为什么这发生了?

我认为在安装参数时
java.library.path

, 您负责下载库的相关库,而不是下载 OS. 老实说,我不确定。

如本节所述

JNI , 您可以通过添加参数来检查您的方式
-XshowSettings:properties -version

在虚拟机中。

涵秋

赞同来自:

对于那些陷入投诉的人:
Can't find dependent libraries

并参加这篇文章来解决问题:

这个投诉意味着 dll, 无法下载哪个取决于其他图书馆 DLL. 使用 depedency walker:
http://www.dependencywalker.com/
, 我们可以说哪些图书馆 DLL 必需的。 通过下载它们 /
System.loadLibrary/"dependedDll"/;

/ 在不成功下载之前 dll, 我们可以解决这个问题。

要回复问题请先登录注册