【问题标题】:JavaCV giving java.lang.UnsatisfiedLinkErrorJavaCV 给出 java.lang.UnsatisfiedLinkError
【发布时间】:2011-10-10 17:09:42
【问题描述】:

好吧,你可能会说“使用谷歌搜索这个,有数百万”。但是,我几乎一整天都在运行以下代码,但自从我尝试后,我每次都得到 java.lang.UnsatisfiedLinkError: C:\Users\hp\AppData\Local\Temp\jniopencv_core2477828805078034839.dll: 找不到相关库 错误,这让我很抓狂。

我找到了 javacv-bin 文件夹,其中包括 javacpp.jar、javacv.jar、javacv-windows-x86.jar、javacv-windows-x86_64.jar

在 Netbeans 中,我打开了项目属性并将它们添加到库中

我找到OpenCV2.3文件夹,复制粘贴到C:\目录。

我添加了 C:\OpenCV2.3\build\bin; C:\OpenCV2.3\build\x86\vc10\bin; C:\OpenCV2.3\build\x64\vc10\bin;PATH.

而且我相信没有什么可做的了。但是,自从我尝试以来,我都遇到了同样的错误。我累了,请有人帮帮我。

最后要说的是,我同时拥有 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);
        }
    }
}

【问题讨论】:

  • 你看过这个question thread吗?
  • 我当然做到了。他有同样的问题,他的问题也没有解决:(

标签: java opencv native linker-errors


【解决方案1】:

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

【讨论】:

  • 我在javacv-windows-x86.jar包中找到了所有的dll文件。我不知道如何生成dll文件。我对这些东西很陌生。我试图在 JNI 中做一些事情,但我也失败了。我会尝试System.load() 方法。我会给你反馈。
  • 它不工作。我尝试使用System.load()System.loadLibrary() 加载所有dll,但这没有用:(
【解决方案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;

希望对您有所帮助! 阿拉文德

【讨论】:

  • 是的。在末尾。非常感谢阿拉文德。你是救生员:D
  • 我也遇到了这个问题,但我不明白这个答案告诉你做什么。有人可以一步一步解释这个吗?谢谢。
  • @vince88 简单地说:他正在将 openCV 的位置添加到他的 %PATH% 变量中。我只需要添加适用于我的系统的路径(32 位,所以 32 位库,我选择了 vc10)。并且无论何时更改路径变量,都必须重新启动 eclipse。
【解决方案3】:

两个提示:

  • 您不能在路径中混合使用 64 和 x86 库!
  • 重启 Eclipse

【讨论】:

    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2014-08-06
      • 2016-09-30
      • 1970-01-01
      • 2013-03-12
      • 1970-01-01
      • 2017-02-07
      • 2016-04-05
      相关资源
      最近更新 更多