JavaCV出现java.lang.UnsatisfiedLinkError错误

3
好的,你可能会说“使用谷歌搜索这个问题,有数百万个答案”。然而,我几乎花了一整天的时间来运行以下代码,但自从尝试后,我一直收到java.lang.UnsatisfiedLinkError: C:\Users\hp\AppData\Local\Temp\jniopencv_core2477828805078034839.dll: Can't find dependent libraries错误,这让我疯狂。
我找到了包括javacpp.jar、javacv.jar、javacv-windows-x86.jar、javacv-windows-x86_64.jar在内的javacv-bin文件夹。
在Netbeans中,我打开了项目属性,并将它们添加到库中。
我找到了OpenCV2.3文件夹,将其复制并粘贴到C:\目录中。
我在PATH中加入了C:\OpenCV2.3\build\bin; C:\OpenCV2.3\build\x86\vc10\bin; C:\OpenCV2.3\build\x64\vc10\bin; 我相信没有什么要做的了。然而,自从我尝试过后,我一直收到相同的错误。我筋疲力尽,请有人帮帮我。
最后要说的是,我有32位64位的JDK,所以我尝试了两种编译器,但都没用。
import static com.googlecode.javacv.cpp.opencv_core.*;
import static com.googlecode.javacv.cpp.opencv_imgproc.*;
import static com.googlecode.javacv.cpp.opencv_highgui.*;

public class Smoother {
    public static void main(String[] args) {
        smooth("filename0.png");
    }
    public static void smooth(String filename) {
        System.out.println("java.library.path="+System.getProperty("java.library.path"));
        IplImage image = cvLoadImage(filename);
        if (image != null) {
            cvSmooth(image, image, CV_GAUSSIAN, 3);
            cvSaveImage(filename, image);
            cvReleaseImage(image);
        }
    }
}

你看过这个问题线程了吗? - buruzaemon
当然了。他也遇到了同样的问题,而且他的问题还没有解决 :( - Cihad Turhan
4个回答

2
我和你遇到了同样的问题。假设你的openCV文件夹位置是C:\OpenCV2.3,以下是需要做的事情。
  1. 在用户环境变量和系统环境变量下创建路径和类路径变量。

  2. 将以下内容追加到所有四个变量中(假设你有最新版本的openCV2.3):C:\OpenCV2.3\build\bin;C:\OpenCV2.3\build\x64\mingw\bin;C:\OpenCV2.3\build\x64\vc9\bin;C:\OpenCV2.3\build\x64\vc10\bin;C:\OpenCV2.3\build\x86\mingw\bin;C:\OpenCV2.3\build\x86\vc9\bin;C:\OpenCV2.3\build\x86\vc10\bin;

希望这能帮助你! Aravind

是的。在最后。非常感谢Aravind。你是救星:D - Cihad Turhan
我也遇到了这个问题,但我不明白这个答案告诉你该怎么做。能有人逐步解释一下吗?谢谢。 - vince88
@vince88 简单地说:他正在将 openCV 的位置添加到他的 %PATH% 变量中。我只需要添加适用于我的系统(32 位,因此选择了 32 位库和 vc10)的路径。每当您更改路径变量时,都必须重新启动 Eclipse。 - wuppi

1

两个提示:

  • 路径中不能混合64位和x86库!
  • 重新启动Eclipse

0

我从未使用过OpenCV,但不知何故我的JNI代码可以工作。你是生成了.dll文件还是它随包提供的?另外,请查看这篇文章,它可能会有所帮助 JNI error while calling a C subroutine ... 还有一个建议,尝试将您的dll文件放在system32文件夹中,然后使用System.load(path/to/dll)方法手动加载它...祝编码愉快


我在javacv-windows-x86.jar包中找到了所有的dll文件。我不知道如何生成dll文件,对这些东西我很菜鸟。我尝试在JNI中做一些事情,但是失败了。我将尝试使用System.load()方法。我会给你反馈的。 - Cihad Turhan
它不起作用。我尝试使用System.load()System.loadLibrary()加载所有dll文件,但是没有用:( - Cihad Turhan

0
如果有人遇到这个问题,更新系统路径和类路径没有解决的话,请将您的OpenCv2.3.1目录重命名为“opencv”。这解决了我的问题。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接