描述
起因是由于课程需要将本地的可执行文件发送到其他主机运行,以及需要在gitee上发布下载下来即可直接运行的文件。然鹅opencv的库繁多,动态编译需要的动态链接库很乱,且动态编译时c++的某些动态链接库也需要包含进去,很容易出错。
因此使用visual studio的静态编译进行编译,最终需要的依赖库会大幅减少。
具体操作
找KIMI问了一个比较简短的流程
工具查找依赖项和打包发布部分不用管,我们先进入Visual Studio中进行配置
打开项目属性
修改配置到release模式,原因是debug模式下opencv的dll文件要使用d.dll可能会有问题,另外使用release模式还有一个好处就是可以快速切换动态编译和静态编译,让debug时进行动态编译,生成的exe会更小。
接下来是配置opencv的环境,这部分应该搜这个问题的同学都会,不多赘述,主要是在vc++目录配置外部包含目录和库目录,在链接器->输入添加opencv的依赖项,注意release配置和debug唯一的不同点在于依赖项要用不是d结尾的ddl文件
外部依赖项添加时,release用上面那个,debug用下面那个
最后是在C/C++中的代码生成部分将运行库改为多线程/MT
现在将配置改为release,编译运行即可
以上是静态编译的部分,但静态编译只包含了c/c++的内置库,要运行opencv项目还需要手动将opencv的dll文件,添加到可执行文件的同目录下才可运行,路径是"你保存opencv的路径"\opencv\build\x64\vc16\bin,要注意它不是以d结尾 。
同时你的代码中涉及到了视频的读写,需要在exe同目录位置添加以下两个dll文件,才能正常运行,这是因为OpenCV在读取MP4文件时依赖于FFmpeg库,而静态编译不会包含这些库,这些库的位置也在"你保存opencv的路径"\opencv\build\x64\vc16\bin中,要注意添加的dll名称结尾不是d。
以上是全部内容了,祝你开发愉快。