VLC-QT源码编译(Windows10+VS2020+MSVC20019+QT5.15)

news2024/10/7 2:20:43

参考VLC-Qt的编译与使用 windows10+VS2019+qt5.15

下载源码

VLC-QT

https://github.com/vlc-qt/vlc-qt

可以通过git或者直接下载ZIP文件,但是里面的libvlc-header和packaging没有下载下来,需要再自行下载。

VLC

https://download.videolan.org/vlc/last/win64/

我选择的是vlc-3.0.18-win64.7z

下载Cmake

可以参考网上教程下载cmake

编译

部署环境

![](https://img-blog.csdnimg.cn/21c10c344fe040a1abe633966496578b.png

将这些文件复制到Qt目录中,我电脑的Qt目录是C:\Qt\5.15.2\msvc2019_64。操作步骤如下:

  • plugins文件夹和libvlc.dll,libvlccore.dll复制到Qt目录的bin中
  • sdk/include/vlc目录复制到qt目录中的include目录中
  • sdk/lib下的所有lib文件复制到Qt目录下的lib中
  • 在电脑的环境变量中,新建一个变量,名为VLC_PLUGIN_PATH,值为Qt目录中plugins的路径
    -![在这里插入图片描述](https://img-blog.csdnimg.cn/748043dc0c684d08963742746eb49abc.png

使用cmake生成项目

打开cmake-gui.exe
在这里插入图片描述
点了configure之后,选择visual studio 17 2020 (根据自己电脑情况来),optional platform for generator选择x64,然后点Finish.
在这里插入图片描述

  • CMAKE_INSTALL_PREFIX最好修改成D盘,不然可能出现权限问题。
  • LIBVLCCORE_LIBRARY改成"libvlccore.lib"
  • LIBVLC_LIBRARY改成"libvlc.lib"
  • 点击“Add Entry",增加一个名为CMAKE_DEBUG_POSTFIX的cmake环境变量,type设置为string,value为"d"
    然后店家configure,再点击generate。

修改build目录下的"cmake_install.cmake"文件

在这里插入图片描述
原来是"include",这里要修改成"bin",上图是修改之后的。

使用visual studio打开项目生成

在这里插入图片描述
双击VLC-Qt.sln
在这里插入图片描述
需要修改一部分配置,不然有可能报错。主要是修改Core,PluginQml,Qml,Widgets。以Core为例子:

  • 右击Core,选择属性
  • 左上角的配置我选择的是release版本的,也可以release和debug版本都修改一下这个配置
  • 链接器->命令行->其他选项,增加/SAFESEH:NO。如图:
    在这里插入图片描述
  • 点击确定
  • PluginQml,Qml,Widgets也做同样的修改

右键"ALL BUILD"选择生成

第一次会生成失败,根据错误提示去修改错误。

“libvlc_media_read_cb”: 未声明的标识符

打开Core->外部依赖项->vlc.h
在这里插入图片描述
添加

typedef __int64 ssize_t; 
poll:找不到标识符

打开Core->外部依赖项->vlc_threads.h
在这里插入图片描述
将下面这行代码放到函数上方,如上图所示

# define poll(u,n,t) vlc_poll(u, n, t)

重新生成项目,生成成功。

生成INSTALL项目

右击INSTALL,点击生成,又会出现错误:MSB302命令setlocal......,于是我参考VLC-Qt的编译与使用 windows10+VS2019+qt5.15的方法

INSTALL项目属性→配置属性→生成事件→生成后事件,将“在生成中使用”改为“否”

但是还是有问题,后来我在配置管理器中,将INSTALL的配置改成Release,然后再生成INSTALL项目,这次就成功了。
在这里插入图片描述

找到编译好之后的项目

之前用CMAKE配置的时候,有一个变量是CMAKE_INSTALL_PREFIX,这个就是编译好的项目的地方。
在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/679823.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

行为型模式--备忘录模式

目录 概述 结构 案例实现 “白箱”备忘录模式 总结: “黑箱”备忘录模式 优缺点 优点: 缺点: 使用场景 概述 又叫快照模式,在不破坏封装性的前提下,捕获一个对象的内部状态,并在该对象之外保存这…

zeromq的学习笔记

ctx_t 在创建ctx_t时,会设置以下参数 _io_thread_count io线程数默认是1 _max_sockets最大socket数是1023 _starting标识设置为true,此时socket还没有创建 _terminating设置为false,在调用zmq_ctx_term时该标识会设置为true _tag设置为ZMQ_CTX_TAG_VALUE_GOOD&…

mySql和VSC++

确认主机服务里的mysql服务已打开 使用组合键“winR”运行“services.msc”,进入本地服务窗口; 2.进入本地服务窗口后,在右侧服务列表中,查找到“ mysql ”服务选项; 3.查找到mysql服务选项后,双击打开mysq…

C++ 面向对象(3)——重载运算符和重载函数

C 允许在同一作用域中的某个函数和运算符指定多个定义,分别称为函数重载和运算符重载。 重载声明是指一个与之前已经在该作用域内声明过的函数或方法具有相同名称的声明,但是它们的参数列表和定义(实现)不相同。 当您调用一个重…

FDM3D打印系列——3、常用打印材料介绍

大家好,我是阿赵。 FDM3D打印机一般都可以支持多种打印材料的,下面来介绍一下几种常用的打印材料 一、PLA 使用FDM打印,最常见的材料就是PLA了 PLA(Polylactic acid),中文名为生物降解塑料聚乳酸&#…

网络安全面试题,渗透测试面试总结

1.什么是WebShell? WebShell就是以asp、php、jsp或者cgi等网页文件形式存在的─种命令执行环境,也可以将其称做为─种网页后门。黑客在入侵了─个网站后,通常会将这些asp或php后门文件与网站服务器WEB目录下正常的网页文件混在─起,然后就可…

【Vue3】生命周期(钩子)函数

在 Vue 3 中,生命周期函数已经被重新设计为钩子函数,并且与 Vue 2 中的生命周期函数有所不同,可以在 setup 函数中使用 onXXX 形式的钩子函数来执行对应的操作。以下是选项式 API 和组合式 API 中常用的几个钩子函数对比: beforeC…

【Java】PriorityQueue--优先级队列

目录 一、优先级队列 (1)概念 二、优先级队列的模拟实现 (1)堆的概念 (2)堆的存储方式 (3)堆的创建 堆向下调整 (4)堆的插入与删除 堆的插入 堆的…

Kubernetes(k8s)容器编排组件介绍

目录 1 整体架构1.1 Master 架构1.2 Node 架构 2 k8s部署组件介绍2.1 K8s 集群架构图2.2 k8s控制组件2.2.1 控制平面2.2.2 kube-apiserver2.2.3 kube-scheduler2.2.4 kube-controller-manager2.2.5 etcd 2.3 k8s运行组件2.3.1 k8s节点2.3.2 容器集2.3.3 容器运行时引擎2.3.4 ku…

机试复试准备中--梦校真题

一、矩阵转置二、统计单词写法一:读取一整行写法二:依次读入每一个单词 三、二叉排序树(DFS)四、IP地址五、特殊排序六、ab(高精度加法)七、奇偶校验八、最大的两个数九、二叉树遍历(DFS)十、成绩排序十一、…

【C++学习】C++入门 | 引用 | 引用的底层原理 | auto关键字 | 范围for(语法糖)

写在前面: 上一篇文章我介绍了缺省参数和函数重载, 探究了C为什么能够支持函数重载而C语言不能, 这里是传送门,有兴趣可以去看看:http://t.csdn.cn/29ycJ 这篇我们继续来学习C的基础知识。 目录 写在前面&#x…

正交编码与正交沃尔什函数详解

本专栏包含信息论与编码的核心知识,按知识点组织,可作为教学或学习的参考。markdown版本已归档至【Github仓库:https://github.com/timerring/information-theory 】或者公众号【AIShareLab】回复 信息论 获取。 文章目录 正交编码正交编码的…

Spring Boot 集成 WebSocket 实现服务端推送消息到客户端

假设有这样一个场景:服务端的资源经常在更新,客户端需要尽量及时地了解到这些更新发生后展示给用户,如果是 HTTP 1.1,通常会开启 ajax 请求询问服务端是否有更新,通过定时器反复轮询服务端响应的资源是否有更新。 在长…

css基础(二)

目录 1. CSS 的复合选择器 1.1 什么是复合选择器 1.2 后代选择器(重要) 1.3 子选择器(重要) 1.4 并集选择器(重要) 1.5 伪类选择器 1.6 链接伪类选择器 1.7 :focus伪类选择器 1.8 复合选择器总结 二、 CSS 的元素显示模式 2.1什么是元素显示模…

多线程编程和并行计算的实例:期货交易及打车软件算法

多线程编程和并行计算的实例:期货交易及打车软件算法 解决现实生活中的问题时,多处理器和多核系统的普及使并行计算成为一个关键的性能提升手段。在这篇博客中,我们将通过深入讨论两个引人入胜而又具有实际意义的场景——期货交易和打车匹配算法&#xf…

CSS圆角进化论

CSS圆角发展过程 大致经历了3个阶段,包括: 背景图片实现圆角CSS2.0标签模拟圆角CSS3.0圆角属性(border-radius属性)实现圆角 ☛背景图片实现圆角:使用背景图片实现圆角的方式很多,实现的方式和圆角的切图方式关系密…

AI绘图软件分享:Midjourney 基础教程(三)

大家好,我是权知星球,今天继续给大家分享Midjourney 基础教程(三):Midjourney 图生图。 刚开始学习使⽤ AI 绘画时,⼤部分⼈的绘画⽅式: 有⼀个想象中的画⾯,⽤中⽂将这个画⾯描述…

【文件操作与IO】Java中如何操作文件

目录 Java 中操作文件 File 概述 属性 构造方法 方法 代码示例 文件内容的读写 —— 数据流 InputStream 概述 FileInputStream 概述 利用 Scanner 进行字符读取 OutputStream 概述 利用 OutputStreamWriter 进行字符写入 利用 PrintWriter 找到我们熟悉的方法 代码…

D. A Wide, Wide Graph(树的直径)

Problem - 1805D - Codeforces 给定一棵包含n个节点的树(一个无环联通图),对于一个固定的整数k,定义Gk为一个具有n个节点的无向图,其中只有当在给定树中节点u和v之间的距离至少为k时才存在边。 对于从1到n的每个k&…

undefined reference to `tputs‘

昨天在Debian11 上编译 bluez 的时候,看这里,出现了如下这个错误,一般这种未定义的错误提示都是没有链接正确的库导致,但是搞了很久都没解决。 奇怪的是之前在 Centos 上编译却没有遇到这个问题,而且在 configure 时也…