ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

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

2020-06-21 18:37:05  阅读:1110  来源: 互联网

标签:exe lib opencv windows opencv3 文件夹 2019 静态 链接


概述

  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. “链接器”–>“输入”–>“附加依赖项”里的动态链接的.lib文件
    (比如opencv_world349.lib或者opencv_world349d.lib)
    以上三个一定要删掉!

静态链接设置

打开你用opencv写的项目,右键项目名 –> “属性”,配置如下:
1)“高级”–>“MFC的使用”–>"在静态库中使用 MFC"
在这里插入图片描述
2) “C/C++”–>“代码生成”–>“运行库”–>“多线程 (/MT)”【如果是debug选MTD,release选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文件,系统自带的lib不要删!!不要删!!

IlmImf.lib;ittnotify.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文件找不到或者XX无法解析

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

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

欢迎提问讨论~~

标签:exe,lib,opencv,windows,opencv3,文件夹,2019,静态,链接
来源: https://blog.csdn.net/scarletteshu/article/details/106848576

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有