使用Java绑定识别OpenCV缺少的DLL

时间:2018-11-01 12:01:11

标签: java windows opencv dll

我正在使用OpenCV release提供的opencv_java400-x64.dll。它在我的系统(Windows 10 Pro)上运行良好。在其他用户系统(通常为Windows 7)上,其中一些无法加载DLL并收到错误java.lang.UnsatisfiedLinkError: C:\...path...\opencv_java400-x64.dll: Can't find dependent libraries.

由于错误消息没有提供具体细节,所以我想知道实际上缺少哪些DLL,因此我可以提供/安装它们。 When using the Visual Studio command prompt tools,我得到以下输出:

**********************************************************************
** Visual Studio 2017 Developer Command Prompt v15.8.3
** Copyright (c) 2017 Microsoft Corporation
**********************************************************************

C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise>dumpbin /dependents "C:\...path...\opencv_java400-x64.dll"
Microsoft (R) COFF/PE Dumper Version 14.15.26726.0
Copyright (C) Microsoft Corporation.  All rights reserved.


Dump of file C:\...path...\opencv_java400-x64.dll

File Type: DLL

  Image has the following dependencies:

    MSVFW32.dll
    AVIFIL32.dll
    AVICAP32.dll
    ole32.dll
    KERNEL32.dll
    USER32.dll
    OLEAUT32.dll
    MFPlat.DLL
    MF.dll
    MFReadWrite.dll
    d3d11.dll
    api-ms-win-downlevel-shlwapi-l1-1-0.dll

  Summary

       F6000 .data
        1000 .gfids
       DF000 .pdata
      819000 .rdata
       18000 .reloc
        1000 .rsrc
     21C8000 .text
        1000 .tls
      25B000 IPPCODE
        B000 IPPDATA
       15000 _RDATA

列出了从属DLL,但是我仍然不知道可能缺少哪些。我意识到安装Visual C++可以在某些情况下解决此问题,但并非全部。 Google上的OpenCV特定搜索结果尚不能解决该问题(例如this也不起作用)。使此特定的DLL在任何基于Windows的操作系统上正常工作的正确方法是什么?

有关我在this OpenCV repository issue中尝试过的内容的其他信息。

1 个答案:

答案 0 :(得分:2)

事实证明api-ms-win-downlevel-shlwapi-l1-1-0.dll丢失了。提供它解决了问题。有关更多信息,请参见this链接。