【问题标题】:OpenCV 2.4 staticlib link still relies on DLL? [windows]OpenCV 2.4 staticlib 链接仍然依赖 DLL? [视窗]
【发布时间】:2015-03-02 09:00:34
【问题描述】:

我的系统是 Windows 64 位,我使用的是 VS 2013。我使用的是最新的 OpenCV 2.4 版本。

我正在尝试编译一个使用 OpenCV 2.4 的简单 C 程序。动态链接版本运行良好。但是我需要一个静态链接的,所以我想我可以将这个可执行文件复制到我的工作环境中。

当我尝试运行静态链接的可执行文件时,程序无法读取我的视频文件,但也不会引发任何类型的异常。但是如果我把 opencv dll 放到我的程序目录下,程序就可以工作了。

我已将附加库路径设置为包含opencv\build\x64\vc12\staticlib。我已将 Runtime Library 设置为 Multi-threaded,但我想我仍然错过了一些选项。我就是想不通。

【问题讨论】:

  • 您必须将链接器输入目录设置为静态库 openCV 文件夹(并且您必须添加一些您可能没想到的额外库)
  • @Micka,是的,我也这样做了
  • 通过使用opencv bin文件夹中的DLL,我发现opencv_ffmpeg2410_64.dll是关键文件。但为什么呢?
  • 您是否从链接器目录中删除了动态库目录?您是否将任何 lib 目录添加到您的 path- 或 libs- 环境变量中?

标签: c++ windows opencv dll


【解决方案1】:

Here 是我在 OpenCV 论坛上发布的问题。总结一下:

Build your own static library from scratch.

更新

重新发布post中的步骤:

  • 构建静态 ffmpeg
  • 构建静态 opencv 和到 ffmpeg 的静态链接
  • 构建程序和指向 opencv 和 ffmpeg 库的静态链接

警告:如果您静态链接到 ffmpeg 库,您可能会遇到法律问题。

【讨论】:

  • 你能多解释一下吗?我确实使用 DBUILD_SHARED_LIBS = False 构建了它,现在如果我要添加它们不会在 dll 上中继的库?或者我应该在 Visual Studio 中打开每个模块/项目并使用特殊设置构建它?
  • @StavBodik,静态 OpenCV 库动态链接到 ffmpeg 库。如果您需要单个可执行文件,则需要按照我在 OpenCV 论坛帖子中执行的步骤操作。
猜你喜欢
  • 2017-06-15
  • 1970-01-01
  • 2010-11-19
  • 2021-05-01
  • 1970-01-01
  • 2011-01-15
  • 2011-10-16
  • 2018-09-17
  • 2023-03-04
相关资源
最近更新 更多