VS2022搭建FFMPEG + Opencv开发环境 + 如何打包项目让程序也能独立跑在其他

[复制链接]
发表于 2024-10-25 19:16:34 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
VS2022搭建FFMPEG + Opencv开发环境 + 如何打包项目让程序也能独立跑在其他人的电脑上?

前言

本文的名字应该是我所写过的博客当中最长的,但内容以精简且保证实用为原则!
正文

首先是ffmpeg

环境搭建流程如下:

  • 在网上下载已经被编译成动态库版的ffmpeg,我的是:ffmpeg-N-113099-g46775e64f8-win64-gpl-shared。
  • 将 ffmpeg-N-113099-g46775e64f8-win64-gpl-shared/include 和 ffmpeg-N-113099-g46775e64f8-win64-gpl-shared/lib 两个目录都复制到项目源文件当中即和.vcxproj后缀的文件同一级。
  • 将 ffmpeg-N-113099-g46775e64f8-win64-gpl-shared/bin目录下,全部的.dll后缀的文件复制到.vcxproj后缀的文件同一级目录中。
  • 在vs2022中,右键项目,选择properties -> Configuration Properties -> VC++ Directories:

    • 修改 General, 在Include Directories当中添加一项:./include。
    • 修改 General, 在Library Directories当中添加:./lib。

  • 选择properties -> Configuration Properties -> C/C++ -> General:

    • 在Additional Include Directories中添加一项:./include。

  • 选择properties -> Configuration Properties -> Linker -> General:

    • 在Additional Library Directories中添加一项:./lib。

  • 选择properties -> Configuration Properties -> Linker -> Input:

    • 在Additional Dependencies中添加依靠库的名称:
      1.     avcodec.lib
      2.     avformat.lib
      3.     avutil.lib
      4.     avdevice.lib
      5.     avfilter.lib
      6.     postproc.lib
      7.     swresample.lib
      8.     swscale.lib
      复制代码

  • 点击右下角的应用按钮,生存退出。
运行如下测试代码
  1. #include <iostream>
  2. extern "C" {
  3. #include "libavcodec/avcodec.h"
  4. #include "libavformat/avformat.h"
  5. }
  6. #include<opencv2/core/core.hpp>
  7. #include<opencv2/highgui/highgui.hpp>
  8. #include<opencv2/imgproc.hpp>
  9. int main()
  10. {
  11.    std::cout << "Hello World!\n";
  12.    printf("%s\n", avcodec_configuration());
  13.    return 0;
  14. }
复制代码
  输出一堆有关ffmpeg的版本以及参数信息即为配置乐成
  然后是opencv的运行环境配置

环境搭建流程如下:

  • 同样可以在网上找到动态库版的opencv。
  • 将 opencv/build/include 和 opencv\build\x64\vc15\lib 两个目录都复制到项目源文件当中即和.vcxproj后缀的文件同一级。(PS,如果项目目录因为引入其他头文件或库,include或lib目录已经存在,则将opencv/build/include和opencv\build\x64\vc15\lib下的全部文件手动复制到项目中对应的目录即可)
  • 将 opencv\build\x64\vc15\bin 目录下,全部的.dll(更严谨一点是非.exe的全部文件)后缀的文件复制到.vcxproj后缀的文件同一级目录中。
  • 重复上节3 ~ 5步骤。
  • 选择properties -> Configuration Properties -> Linker -> Input:

    • 在Additional Dependencies中添加依靠库的名称:
      1.     opencv_world440.lib
      2.     # 如果你需要同时安装opencv和ffmpeg的话,可以直接一次性添加如下依赖
      3.     # avcodec.lib
      4.     # avformat.lib
      5.     # avutil.lib
      6.     # avdevice.lib
      7.     # avfilter.lib
      8.     # postproc.lib
      9.     # swresample.lib
      10.     # swscale.lib
      11.     # opencv_world440.lib
      复制代码

  • 点击右下角的应用按钮,生存退出。
运行如下测试代码:
  1. #include <opencv2/opencv.hpp>
  2. using namespace cv;
  3. int main() {
  4.         const char* pic_path = "任意一张你电脑上的图片路径";
  5.         Mat pic = imread(pic_path, 1);
  6.         imshow("Hello World!", pic);
  7.         waitKey();
  8.         return 0;
  9. }
复制代码
  可以看到用opencv的api乐成显示了一张图片,即为配置乐成。
  在windows下对VS2022项目程序进行打包

末了就是对项目进行打包,实现让其有完整的依靠库,在其他人的电脑也能运行你的应用程序。 说简单点着实这个过程就各种动态库、静态库的拷贝。你找一台没任何环境的新电脑作为测试环境,让你的程序在它上面运行,运行的时候会崩溃,根据报错来一点一点将所缺失的库拷贝到应用程序所在的目录当中。 这里记载了一下只引入opencv和ffmpeg环境下打包的流程。当然微软还提供了更为强大的打包方式:Microsoft Visual Studio Installer Projects。本文所解说的打包方式是为这些特定需求人群服务的:不必要花里胡朝的方式,只求方便的一个打包方式。

  • 将上方菜单栏的Debug改成Release。
  • 再次根据在配置ffmpeg和opencv时的过程重新配置项目的properties。
  • 末了修改:properties -> Configuration Properties -> C/C++ -> Code Generation -> Runtime Library -> Multi-threaded DLL (/MD)
  • 编译无报错
  • 新建一个目录app
  • 将项目根目录x64/Release/下全部文件拷贝到app
  • 将前面配置的include、lib文件夹拷贝到app
  • 将.dll文件拷贝到app
  • 完成迁徙,app可独立在任何人的电脑上运行。

本章完结

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
回复

使用道具 举报

×
登录参与点评抽奖,加入IT实名职场社区
去登录
快速回复 返回顶部 返回列表