【问题标题】:Opencv 3.2.0 .dll missing despite static linking尽管静态链接,Opencv 3.2.0 .dll 仍然丢失
【发布时间】:2017-06-15 14:40:56
【问题描述】:

我正在尝试在未安装 OpenCV 的 PC 上使用利用 OpenCV 的程序。尝试启动程序会导致以下错误:

“此程序无法启动,因为您的计算机中缺少 opencv_world320.dll。请尝试重新安装该程序以解决此问题。”

现在我知道如果未链接正确的库或链接不是静态的,但由于预构建的 OpenCV 3.2 仅使用单个库并且在仔细检查运行时库在 VS2015 中设置为 /MT 后,我没有知道为什么这个错误仍然存​​在。

在 PE 分析器中查看构建的 .exe 文件还显示 opencv_world320.dll 仍被列为导入。

如何解决这个问题?

【问题讨论】:

标签: c++ opencv dll visual-studio-2015 static-libraries


【解决方案1】:

OpenCV 3.2 prebuild 只为 vc14 提供 x64 动态 库。

您尝试链接的.lib(在子文件夹x64\vc14\lib 中)是一个导入 库,其中包含允许链接器链接到dll 的符号。有关此事的更多详细信息,请参阅herehere

在实践中,如果你想静态链接到 OpenCV,你需要重建它。您将在子文件夹 x64\vc14\staticlib 中找到静态库。

【讨论】:

  • 据我所知,3.2 不再提供staticlib 文件夹。非常感谢,我会调查的。
  • 用静态链接重新编译opencv后就会出现
  • @Miki ,我使用的是 Windows,我在 CMAKE 中编译了 OpenCV 3.4.2 并带有“BUILD_SHARED_LIBS”标志,现在我应该打开 OpenCV.sln 并重建所有?在 OpenCV 3.4.2 中,它使用所有库创建名为“lib”的文件夹,它与 x64\vc14\staticlib 是否相同?