Qt开发中如何添加第三方库--(以ffmpeg和sdl库为例)

简介:

 近期做一个播放器的项目,界面采用qt开发,需要用到第三方库ffmpegsdl库。由于以前没有qt添加第三方库的经验,因此在环境配置上费了不少功夫,因此在这里总结一下

  在QT中,自动化编译过程,是通过qmake工具生成一个makefile文件实现的,它是由.pro文件生成而来的,因此添加第三方库可以从.pro工程文件入手。

添加第三方库,我们主要添加两个信息,一个是头文件信息,参数是INCLUDE,还有一个是链接库信息,参数在pro文件参数中是LIBS

同样由于我们所采用的编译器的不同,第三方库的配置方法可能不尽相同,这是由于不同编译器的编译参数决定的

 

QT常用的编译器有两个,分别是MinGw(gcc), VS;QT在编译过程中,默认获在我们设定的编译目录下生成几个makefileTupe文件,然后编译的过程起始就是根据makefile文件中的配置进行的,因此我们在指定编译参数的时候,填写的路径信息,要么是绝对路径(这种方式并不好,换台机子可能就不好使用了),或者给出第三方库文件相对于编译路径的相对地址

为了方便使用,我们将ffmepg库文件和sdl库文件,放到工程编译目录的根目录下,这样ffmpeg的头文件路径就是“./ffmpeg/include”,库文件路径就是“/ffmpeg/lib 

 MinGw

Gcc编译时引入第三方库的参数通常是

头文件引入 :gcc -I头文件目录

链接库指定:gcc -L链接库地址 -l连接库名称去掉lib

因假设我们添加ffmpe库的代码就是

  1. # include the head file and link library of 'ffmpeg'  
  2. INCLUDEPATH     +=  ./ffmpeg/include  
  3. LIBS            +=  -L./ffmpeg/lib -lavcodec     \  
  4.                     -L./ffmpeg/lib -lavdevice     \  
  5.                     -L./ffmpeg/lib -lavfilter     \  
  6.                     -L./ffmpeg/lib -lavformat     \  
  7.                     -L./ffmpeg/lib -lavutil       \  
  8.                     -L./ffmpeg/lib -lpostproc     \  
  9.                     -L./ffmpeg/lib -lswscale  
# include the head file and link library of 'ffmpeg'
INCLUDEPATH     +=  ./ffmpeg/include
LIBS            +=  -L./ffmpeg/lib -lavcodec     \
                    -L./ffmpeg/lib -lavdevice     \
                    -L./ffmpeg/lib -lavfilter     \
                    -L./ffmpeg/lib -lavformat     \
                    -L./ffmpeg/lib -lavutil       \
                    -L./ffmpeg/lib -lpostproc     \
                    -L./ffmpeg/lib -lswscale

同样对了sdl

  1. # include the head file and link library of 'ffmpeg'  
  2. INCLUDEPATH     +=  .\sdl\include  
  3. LIBS            +=  -L.\sdl\lib -lSDL  
# include the head file and link library of 'ffmpeg'
INCLUDEPATH     +=  .\sdl\include
LIBS            +=  -L.\sdl\lib -lSDL

MSVS编译环境

Vs编译器比较简单,它在编译的过程中,并不需要指定-I-L-l等参数

因此给我们省去很多麻烦,指定指定文件即可

  1. # include the head file and link library of 'ffmpeg'  
  2. INCLUDEPATH     +=  .\ffmpeg\include  
  3. LIBS            +=  .\ffmpeg\libavcodec     \  
  4.                     .\ffmpeg\libavdevice     \  
  5.                     .\ffmpeg\libavfilter     \  
  6.                     .\ffmpeg\liBavformat     \  
  7.                     .\ffmpeg\libavutil       \  
  8.                     .\ffmpeg\libpostproc     \  
  9.                     .\ffmpeg\libswscale  
  10.    
  11. # include the head file and link library of 'ffmpeg'  
  12. INCLUDEPATH     +=  .\sdl\include  
  13. LIBS            +=  .\sdl\libSDL  


转载:http://blog.csdn.net/gatieme/article/details/20904547

目录
相关文章
|
23天前
|
算法 数据处理 开发者
FFmpeg库的使用与深度解析:解码音频流流程
FFmpeg库的使用与深度解析:解码音频流流程
34 0
|
29天前
|
存储 编解码 vr&ar
用C++实现视频编码器:FFmpeg与SDL技术结合,轻松编写高效编解码器
用C++实现视频编码器:FFmpeg与SDL技术结合,轻松编写高效编解码器
68 0
|
28天前
|
编解码 算法 vr&ar
深度剖析FFmpeg视频解码后的帧处理到Qt显示 从AVFrame到QImage的转换(二)
深度剖析FFmpeg视频解码后的帧处理到Qt显示 从AVFrame到QImage的转换
24 1
|
28天前
|
存储 编解码 算法
深度剖析FFmpeg视频解码后的帧处理到Qt显示 从AVFrame到QImage的转换(一)
深度剖析FFmpeg视频解码后的帧处理到Qt显示 从AVFrame到QImage的转换
49 1
|
12天前
|
编解码 缓存 算法
FFmpeg开发笔记(四)FFmpeg的动态链接库介绍
FFmpeg是一个强大的多媒体处理框架,提供ffmpeg、ffplay和ffprobe工具及八个库:avcodec(编解码)、avdevice(设备输入输出)、avfilter(音视频滤镜)、avformat(格式处理)、avutil(通用工具和算法)、postproc(后期效果)、swresample(音频重采样)和swscale(视频图像转换)。这些库支持定制化开发,涵盖了从采集、编码、过滤到输出的全过程。了解详细FFmpeg开发信息,可参考《FFmpeg开发实战:从零基础到短视频上线》。
27 0
FFmpeg开发笔记(四)FFmpeg的动态链接库介绍
|
12天前
|
编解码 搜索推荐 开发者
FFmpeg开发笔记(三)FFmpeg的可执行程序介绍
FFmpeg提供ffmpeg、ffplay和ffprobe三个可执行程序。ffmpeg用于音视频转换和查询支持信息,如编解码器、文件格式和协议。ffplay是一个简单的播放器,支持播放音视频并显示相关信息。ffprobe用于分析多媒体文件参数和数据包详情。《FFmpeg开发实战:从零基础到短视频上线》一书提供更深入的开发知识。
23 4
FFmpeg开发笔记(三)FFmpeg的可执行程序介绍
|
13天前
|
Linux API C语言
FFmpeg开发笔记(一)搭建Linux系统的开发环境
本文指导初学者如何在Linux上搭建FFmpeg开发环境。首先,由于FFmpeg依赖第三方库,可以免去编译源码的复杂过程,直接安装预编译的FFmpeg动态库。推荐网站<https://github.com/BtbN/FFmpeg-Builds/releases>提供适用于不同系统的FFmpeg包。但在安装前,需确保系统有不低于2.22版本的glibc库。详细步骤包括下载glibc-2.23源码,配置、编译和安装。接着,下载Linux版FFmpeg安装包,解压至/usr/local/ffmpeg,并设置环境变量。最后编写和编译简单的C或C++测试程序验证FFmpeg环境是否正确配置。
35 8
FFmpeg开发笔记(一)搭建Linux系统的开发环境
|
17天前
|
存储
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
Qt更新组件出现(“要继续此操作,至少需要一个有效且已启用的储存库”)
|
17天前
qt开发使用camera类获取摄像头信息并拍照保存
qt开发使用camera类获取摄像头信息并拍照保存
|
24天前
|
算法 开发者
【Qt SDL相关问题】Qt 引入SDL导致main函数冲突的解决方案
【Qt SDL相关问题】Qt 引入SDL导致main函数冲突的解决方案
18 2