【问题标题】:How to use just *.lib file instead of *.dll from OpenCV C++如何仅使用 *.lib 文件而不是 OpenCV C++ 中的 *.dll
【发布时间】:2016-12-09 18:42:47
【问题描述】:

我对使用 OpenCV C++ 非常陌生。是否有可能配置我的 VS 2013 以将我的项目配置为仅使用 *.lib 而不是 *.dll ?我不想将任何*.dll 文件添加到我的最终可执行文件中。我听说*.lib 文件在编译过程中只会插入(对不起这个词)到这个可执行文件中,而不是周围的许多*.dll 文件。

我一直在关注这个manual,尤其是在这个结束时有一些 INSTALL 项目。我从本手册中完成了每一步,但是......它不起作用。 (我可以编译测试项目-here),但它总是说“我找不到*.dll文件和程序无法运行。”

谢谢。

【问题讨论】:

标签: c++ opencv dll


【解决方案1】:

您可以尝试静态链接。但它会使编译后的可执行文件更大,并且将所有部分组装成一个可执行文件需要更长的时间。

可以通过关闭使用共享库(即 dll)标志来实现。 cmake -DBUILD_SHARED_LIBS=OFF

【讨论】:

  • 谢谢,问题出在VS 2013的配置上。你说得对,可执行文件的大小增加了~2MB。与链接的 *.dll 一样可以快速执行吗?
  • @Martej 是的。除非您想在单个可执行文件中发布您的产品,否则始终建议使用 dll。它不仅编译速度更快,而且启动速度也更快,因为您正在共享可能已经被其他程序加载到内存中的库。
【解决方案2】:

据我所知,没有办法避免使用 *.dll 文件。另外我猜你正在尝试从 VS2013 GUI 运行你的项目。问题是如果没有单独的配置,可执行文件需要所有 *.dll 文件在它的位置。

VS 在 /project/debug/.exe 中定位您项目的 .exe 文件(或发布取决于设置)。

“安装”项目通常会创建一个单独的文件夹,用于“安装”您的项目。

因此,您要么将 *.dll 文件复制到项目的构建文件夹中,要么每次构建“安装”项目并从特定的“安装”文件夹启动 *.exe。

【讨论】:

    【解决方案3】:

    我认为你可以设置 [Build]->[BUILD_SHARED_LIBS]->value unchecked

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-10
      • 2022-11-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多