windows 静态编译opencv3,生成可执行文件.exe,无需依赖环境运行【visual studio 2019 + cmake + opencv3】
作者:互联网
概述
- 准备工作
- 静态编译opencv3
- 在项目中使用opencv3静态库(不用.dll)
- 可能出现的问题
准备工作
安装 visual studio 2019
在我的博文中有写:安装VS 2019
已安装的可以跳过。
安装cmake
在我的博文中有写:安装cmake
下载opencv
下载连接:opencv 下载
这里我选择的是opencv3.4.10,你也可以根据需要下载别的版本。
点windows,下载opencv安装的可执行文件并运行,选择一个文件夹extract就行。
cmake静态编译opencv3
打开cmake-gui
- 选择opencv所在的源文件夹(就是你安装的opencv在的那个位置,要具体到source文件夹)
- 选择opencv要编译到的目标文件夹
- 点击“configure”,选择你电脑安装的visual studio版本,我选的是2019
标红报错python相关的没有关系不用管,如果中断了继续点configure - configure结束后会有很多标红选项,这个时候有几个选项要取消勾选:BUILD_SHARED_LIBS(编译静态库),BUILD_JAVA(c++用不到java),BUILD_EXAMPLES,BUILD_TESTS,BUILD_PERF_TESTS
- 继续点configure,标红不管再点configure直到完成
- 点 generate
在VS 2019中调试opencv静态库
- 打开刚刚cmake编译完的目标目录,找到OpenCV.sln,打开(visual studio 2019)
- 点击debug和release都要调试一遍,切换的时候都要设置一次“配置管理器”,设置方法如下:
点开配置管理器,在INSTALL上打勾
如果不需要python和java,可以把这个也一并取消勾选:
设置完成后关闭,点击调试器开始调试。这一过程会花一段时间。 - 调试时出现于python相关的不用管。出现ALL_BUILD有什么问题也不用管(除非你的解决方案不止一个项目,自行百度)
- 调试完成后,右键“解决方案”–>“重新生成解决方案”
- 找到CMakeTargets中的INSTALL,右键选择“仅限于项目”–>“仅生成INSTALL”
- 结束后得到的文件夹有很多东西,主要看看里面有没有install文件夹,具体内容可以参考:
在项目中静态链接opencv3
清除动态链接的设置(重要!)
把项目属性里面所有的动态链接设置全部清除掉,包括:
- “链接器”–>“常规”–>“附加库目录”
- “c/c++”–>“附加包含目录”
- “链接器”–>“输入”–>“附加依赖项”里的动态链接的.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文件:
- 有没有书写错误
- 有没有漏加多加的(不要有什么.cmake文件夹在里面哈)
- 动态链接的.lib有没有删除
- 系统自带的.lib有没有被误删
检查动态链接的其他配置有没有删干净。
欢迎提问讨论~~
标签:exe,lib,opencv,windows,opencv3,文件夹,2019,静态,链接 来源: https://blog.csdn.net/scarletteshu/article/details/106848576