使用静态库构建OpenCV应用程序

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用静态库构建OpenCV应用程序相关的知识,希望对你有一定的参考价值。

编辑:

几步后问题解决了。您可以在OpenCV问答页面上查看我的帖子。

http://answers.opencv.org/question/152366/build-application-with-static-libraries/

我正在尝试静态链接我的C ++(CMake)应用程序,以便在另一台没有安装OpenCV的计算机上运行。

至今,

  1. 我通过将BUILD_SHARED_LIBS设置为OFF来从源代码构建OpenCV,因此我可以在lib目录下看到库文件。 (扩展名为.a)
  2. 我为OpenCV的新版本编辑了环境变量,我的IDE确实看到包含目录和文件,所以这一步似乎也没问题。
  3. 在CMake中为target_link_libraries命令添加了“-static”参数: target_link_libraries(HoGPeopleDetector ${OpenCV_LIBS} "-static")

然后重建应用程序,EXE大小从200 KB增加到1.6 MB。所以我猜连接过程是成功的。

当我在IDE中运行它时,该应用程序运行良好。但是,当我尝试从EXE文件运行它时,它仍然需要DLL文件。 (libopencv_core310.dll和更多)

IDE:CLion 2017.1.2 OpenCV:3.1

答案

几步后问题解决了。您可以在OpenCV问答页面上查看我的帖子。

http://answers.opencv.org/question/152366/build-application-with-static-libraries/

总的来说,它是“记得在每次调用cmake之间清除你的CMake cache file”并移动/复制opencv_ffmpegXXX.dll(在我的情况下为310),将它放在与你的EXE相同的目录中。

以上是关于使用静态库构建OpenCV应用程序的主要内容,如果未能解决你的问题,请参考以下文章

使用多线程调试 DLL (/MDd) C 运行时库构建静态 Opencv 库

在 Visual Studio 中构建 DLL 时使用静态库

静态库的未定义引用和奇怪的内容

gcc生成静态库.a和动态库.so和OpenCV3.4.11的安装及使用示例

在 C# 应用程序中构建静态库

静态库,链接到共享库