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

Building an OpenCV Application with Static Libraries

编辑:

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

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

我正在尝试将我的 C++ (CMake) 应用程序静态 link 到另一台未安装 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。所以我猜 linking 过程是成功的。

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

IDE:CLion 2017.1.2 OpenCV:3.1

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

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

总的来说,"remember to clear your CMake between each invocation of cmake" move/copy opencv_ffmpegXXX.dll(在我的例子中是 310),把它和你的 EXE 放在同一个目录下。