windows 静态编译opencv3,生成可执行文件.exe,无需依赖环境运行【visual studio 2019 + cmake + opencv3】

概述

  1. 准备工作
  2. 静态编译opencv3
  3. 在项目中使用opencv3静态库(不用.dll)
  4. 可能出现的问题

准备工作

安装 visual studio 2019

在我的博文中有写:安装VS 2019
已安装的可以跳过。

安装cmake

在我的博文中有写:安装cmake

下载opencv

下载连接:opencv 下载
这里我选择的是opencv3.4.10,你也可以根据需要下载别的版本。
在这里插入图片描述
点windows,下载opencv安装的可执行文件并运行,选择一个文件夹extract就行。

cmake静态编译opencv3

打开cmake-gui
在这里插入图片描述

  1. 选择opencv所在的源文件夹(就是你安装的opencv在的那个位置,要具体到source文件夹)
  2. 选择opencv要编译到的目标文件夹
  3. 点击“configure”,选择你电脑安装的visual studio版本,我选的是2019
    在这里插入图片描述
    标红报错python相关的没有关系不用管,如果中断了继续点configure
  4. configure结束后会有很多标红选项,这个时候有几个选项要取消勾选:BUILD_SHARED_LIBS(编译静态库),BUILD_JAVA(c++用不到java),BUILD_EXAMPLES,BUILD_TESTS,BUILD_PERF_TESTS
    在这里插入图片描述
    在这里插入图片描述
  5. 继续点configure,标红不管再点configure直到完成
  6. 点 generate

在VS 2019中调试opencv静态库

  1. 打开刚刚cmake编译完的目标目录,找到OpenCV.sln,打开(visual studio 2019)
    在这里插入图片描述
  2. 点击debug和release都要调试一遍,切换的时候都要设置一次“配置管理器”,设置方法如下:
    在这里插入图片描述
    在这里插入图片描述
    点开配置管理器,在INSTALL上打勾
    在这里插入图片描述
    如果不需要python和java,可以把这个也一并取消勾选:
    在这里插入图片描述
    设置完成后关闭,点击调试器开始调试。这一过程会花一段时间。
  3. 调试时出现于python相关的不用管。出现ALL_BUILD有什么问题也不用管(除非你的解决方案不止一个项目,自行百度)
  4. 调试完成后,右键“解决方案”–>“重新生成解决方案”
    在这里插入图片描述
  5. 找到CMakeTargets中的INSTALL,右键选择“仅限于项目”–>“仅生成INSTALL”
    在这里插入图片描述
  6. 结束后得到的文件夹有很多东西,主要看看里面有没有install文件夹,具体内容可以参考:
    在这里插入图片描述在这里插入图片描述在这里插入图片描述

在项目中静态链接opencv3

清除动态链接的设置

把项目属性里面所有的动态链接设置全部清除掉,包括:

  1. “链接器”–>“常规”–>“附加库目录”
  2. “c/c++”–>“附加包含目录”
  3. “l链接器”–>“输入”–>“附加依赖项”里的动态链接的.lib文件
    (比如opencv_world349.lib或者opencv_world349d.lib)

静态链接设置

打开你用opencv写的项目,右键项目名 –> “属性”,配置如下:
1)“高级”–>“MFC的使用”–>"在静态库中使用 MFC"
在这里插入图片描述
2) “C/C++”–>“代码生成”–>“运行库”–>"多线程 (/MT)"
在这里插入图片描述
3) 在“VC++目录”–>"包含目录"中添加:

"XXX\install\include\"
"XXX\install\include\opencv"
"XXX\install\include\opencv2"

XXX就是你刚调试完opencv静态库那个文件夹
在这里插入图片描述
4)在"VC++目录"–>“库目录” 添加路径

XXX\install\x64\vc16\staticlib

在这里插入图片描述
5) “链接器”–>“输入”–>"附加依赖项"
复制下面代码到依赖项的最前面。
(其中349为opencv版本号,你根据你自己的修改,其实就是“XXX/install/x64/vc16/staticlib/”里的所有.lib文件)

IlmImf.lib;ttnotify.lib;libjasper.lib;libjpeg-turbo.lib;libpng.lib;libprotobuf.lib;libtiff.lib;libwebp.lib;opencv_calib3d349.lib;opencv_core349.lib;opencv_dnn349.lib;opencv_features2d349.lib;opencv_flann349.lib;opencv_highgui349.lib;opencv_imgcodecs349.lib;opencv_imgproc349.lib;opencv_ml349.lib;opencv_objdetect349.lib;opencv_photo349.lib;opencv_shape349.lib;opencv_stitching349.lib;opencv_superres349.lib;opencv_video349.lib;opencv_videoio349.lib;opencv_videostab349.lib;quirc.lib;zlib.lib;

在这里插入图片描述
ps:如果你要分release和debug来添加依赖项也可以,debug就是文件名里末尾带d的lib文件
6)调试即可
比如你配置的属性是debug x64 ,调试时也要这样

静态链接编译成功

编译成功后,你写代码的项目文件夹的“/x64/debug(or release)/”下就能找到.exe文件,可以脱离环境运行~!
在这里插入图片描述
其实只需要两个文件就可以运行!:
在这里插入图片描述

可能遇到的问题

提示没有安装MFC

打开visual studio 2019 installer–>“修改”–>“单个组件”–>选择MFC相关的x86,x64组件–>修改安装

显示什么.lib文件找不到

检查附加依赖项里的.lib文件:

  1. 有没有书写错误
  2. 有没有漏加多加的(不要有什么.cmake文件夹在里面哈)
  3. 动态链接的.lib有没有删除
    检查动态链接的其他配置有没有删干净。

欢迎提问讨论~~

猜你喜欢

转载自blog.csdn.net/scarletteshu/article/details/106848576