在Windows 7中出现的Javacv UnsatisfiedLinkError

4
在我的项目中,我想从网络摄像头中捕获图像。我按照这篇博客文章的说明逐步配置:“OpenCV-JavaCV:eclipse项目配置Windows 7”。配置完成后,我测试了示例代码并成功找到了我的网络摄像头。
设置:正在设置设备0
设置:Namuga 1.3M Webcam
设置:使用SmartTee找不到预览引脚
设置:已设置拍摄回调
设置:设备已设置并准备好捕获图像。
然后我遇到了一个.dll错误。我使用的是Windows 7 x64。
Exception in thread "Thread-2" java.lang.UnsatisfiedLinkError: C:\Users\Administrator\AppData\Local\Temp\javacpp153028723186\jniopencv_core.dll: Can't find dependent libraries
at java.lang.ClassLoader$NativeLibrary.load(Native Method)
at java.lang.ClassLoader.loadLibrary1(Unknown Source)
at java.lang.ClassLoader.loadLibrary0(Unknown Source)
at java.lang.ClassLoader.loadLibrary(Unknown Source)
at java.lang.Runtime.load0(Unknown Source)
at java.lang.System.load(Unknown Source)
at com.googlecode.javacpp.Loader.loadLibrary(Loader.java:418)
at com.googlecode.javacpp.Loader.load(Loader.java:368)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core.<clinit>(opencv_core.java:131)
at java.lang.Class.forName0(Native Method)
at java.lang.Class.forName(Unknown Source)
at com.googlecode.javacpp.Loader.load(Loader.java:334)
at com.googlecode.javacpp.Loader.load(Loader.java:315)
at com.googlecode.javacv.cpp.opencv_core$CvArr.<clinit>(opencv_core.java:158)
at com.googlecode.javacv.VideoInputFrameGrabber.grab(VideoInputFrameGrabber.java:158)
at GrabberShow.run(GrabberShow.java:24)
at java.lang.Thread.run(Unknown Source)

我该如何解决这个问题?

这个问题已经成功得到解答。请查看答案,给那些帮助过你的人点赞,并点击答案旁边的复选框来标记它为官方答案,以便解决你的问题。 - karlphillip
4个回答

4
检查你的Opencv版本和JavaCv版本是否匹配。你可以在javacv-bin的readme文件中检查它所特别要求的Opencv版本。

1

我在Windows XP和Windows 7上遇到了这个问题,以下是我如何在两个平台上使用Netbeans 7.2解决它的方法:

安装所有必需的软件:

注意:确保C:\ffmpeg\bin是有效路径。

  • OpenCV 2.4.2(32位):下载OpenCV-2.4.2.exe并提取它。将其内容放置在C:\opencv

注意:确保C:\opencv\build\x86\vc10\bin是有效路径。

  • JavaCV 0.2:下载javacv-0.2-bin.zip并解压缩。将解压后的文件夹移动到C:\javacv-bin

  • Microsoft Visual C++ Redistributable Package(32位):下载并安装vcredist_x86.exe

配置环境:

C:\ffmpeg\bin;C:\opencv\build\x86\vc10\bin

现在您已经准备好创建一个新的Netbeans项目并测试您的应用程序。但在编译之前,不要忘记右键单击项目窗口中的Libraries文件夹,并单击Add Jar/FOLDER以选择位于C:\javacv-bin的所有.jar文件。

1

不满意的链接意味着 jniopencv_core.dll 需要的所有本地代码库都无法找到。

您是否部署了所有所需的代码库,还是只部署了 jniopencv_core.dll?


我下载了http://ganeshtiwaridotcomdotnp.blogspot.com/2011/12/opencv-javacv-eclipse-project.html的opencvSuperpack,然后将其解压到了C盘,并添加了环境变量。但我不明白接下来该怎么做。 - user1291468
有超过一个 DLL 文件吗?你需要让 JVM 能够找到它们所有。 - Thorbjørn Ravn Andersen
请问您能否提供更多关于如何将所有DLL路径传递给JVM的信息?此致敬礼。 - user1291468
我不熟悉具体的软件包,无法给您更好的指导。如果您完全按照指示操作(包括 JVM 的 32/64 位版本),请联系编写者并提出错误报告。 - Thorbjørn Ravn Andersen

0

请确保您有vm参数-Djava.library.path=<path-to-native>,该参数指向包含您的dll文件的目录。


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