【QT】编译QtWebEngine(Build QtWebEngine from source)Win10+QT5.7.1_x64+VS2015

news2024/11/27 8:34:29

1、前言

关于QtWebEngine是干什么的,怎么用的,不在此赘述。

1.1、为什么要编译QtWebEngine

QT默认的QtWebEngine是不支持mp3、mp4解码的,也就是说,如果想要在QT浏览网页的时候支持在线播放音视频,就需要让QtWebEngine支持对音视频格式的解码。QtWebEngine底层使用了chromium库,可能是为了避免知识产权方面的问题,QT并没有直接提供对应的音视频解码的第三方库,只提供了第三方库的源码,所以就需要自己手动编译了。

2、编译环境

在编译的时候遇到了各种奇奇怪怪的问题,基本上都是编译环境引起。通过不断的尝试,摸索出来按照以下的环境进行配置成功率会比较高。

环境的配置比较全面并且麻烦,建议有条件的尽量按照文档中所描述的进行配置。

2.1、操作系统

首先就是操作系统,建议尽量通过虚拟机进行操作。

在虚拟机中安装一个纯净的操作系统, 本文档中使用的是Win10_x64。并且最好把操作系统的语言设置成英文,设置成英文会避免在编译时出现一些字符格式上的错误。

1)修改操作系统语言

 这个需要下载英语的语言包。

2)修改操作系统区域

将操作系统的区域设置为美国:

2.2、软件安装

我会把用到的软件放到网盘中,有需要的可以直接下载,网盘地址:

链接:https://pan.baidu.com/s/18WSYn6Jf02z9e-74A_-2EQ。

提取码:js87

2.2.1、VS2015

下载地址:下载 Visual Studio Tools - 免费安装 Windows、Mac、Linux。

安装VC++模块,SDK Windows 10 (10.0.xxxxx.x)

可以将VS2015的显示语言改成英文,否则在编译时,部分字符会显示成乱码,不确定是否会影响正常编译。

2.2.2、QT5.7.1

下载地址:Index of /new_archive/qt/5.7/5.7.1。

本文档中安装的是 qt-opensource-windows-x86-msvc2015_64-5.7.1

安装:

 一定要勾选Source和QtWebEngine!

一定要勾选Source和QtWebEngine!

一定要勾选Source和QtWebEngine!

安装完成之后,将qt安装目录下的bin路径添加至系统环境变量。

2.2.3、Python2.7

下载地址:Python Releases for Windows | Python.org。

一定要安装2.7.x的版本,不支持python3!

本文档中安装的是 python-2.7.18.amd64

安装完成之后,将安装目录添加至系统环境变量中。

2.2.4、Perl

下载地址:Strawberry Perl for Windows。

本文档中使用的是 strawberry-perl-5.32.1.1-64bit

安装完成之后,会自动将bin目录添加至系统环境变量。

2.2.5、Bison and Flex

下载地址:https://sourceforge.net/projects/winflexbison/。

将win-bison.exe重命名为bison.exe,将win-flex.exe重命名为flex.exe。

然后将bison.exe和flex.exe的路径添加至系统环境变量。

2.2.6、Gperf

下载地址:Gperf for Windows。

安装gperf-3.0.1.exe(这个需要双击进行安装),将bin目录添加至系统环境变量

(可以将bison.exe和flex.exe都放在这个文件夹下)。

2.2.7、Git

下载地址:Git - Downloads。

下载windows x64所用版本 Git-2.38.1-64-bit,安装完成将bin目录添加至系统环境变量。

所有软件安装完成之后的系统环境变量:

 !所有的软件安装完成,配置环境变量之后,重启一下电脑!

3、编译流程

以管理员权限打开cmd,打开命令行工具。

1)找一下 vcvars64.bat 文件所在目录,先进入到该目录下

cd C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\

然后执行 vcvars64.bat:

 2)进入到qtwebengine原文件所在目录

cd C:\Qt\Qt5.7.1\5.7\Src\qtwebengine

 3)qmake编译

qmake WEBENGINE_CONFIG+=use_proprietary_codecs qtwebengine.pro

(环境变量已配置)

或者

C:\Qt\Qt5.7.1\5.7\msvc2015_64\bin\qmake.exe WEBENGINE_CONFIG+=use_proprietary_codecs qtwebengine.pro

 4)nmake

nmake

(环境变量已配置)

或者

"C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\bin\amd64\nmake.exe"

如果所有的环境都配置正确的话,此时就正常编译了,会花费比较长的时间(本机大概花费了将近3个小时)

5)nmake install

这一步骤其实是将编译好库拷贝到QT的指定目录下。如果没必要的话,可以不用执行这一步,编译好的库都在C:\Qt\Qt5.7.1\5.7\Src\qtwebengine文件夹下了:

 install其实就是将编译好的库自动拷贝到QT的bin目录下。

4、编译时遇到的问题

编译总是遇到很多奇怪的问题。总是会不断的尝试各种方法以解决问题,最终虽然会解决,但是有时候也不明确问题的根本原因是什么,或者说不知道哪一种方法才是解决问题的直接方式。所以在此记录一下遇到的问题,以及可能的解决方法。

4.1、问题一:module machine type ‘x64’ conflicts with target machine type ‘x86’

 这个问题应该是在编译的时候没选对编译工具的版本,试了很多次,只要严格按照上面的编译流程执行的话就不会出现这个问题。

4.2、问题二:target architecture x64 is only support on x64 host

 这个问题困扰我很久,看问题描述应该也是编译版本没选对的原因,但是不管怎么尝试都还是会出现这个问题,后来重新装个纯净的win10操作系统并把相关软件安装之后,再执行编译,发现这个问题就没有了,后来猜测可能和我以前的系统中还装有vs2019+qt5.12.12有关,虽然期间我把vs2019和qt5.12.12都卸载了,但是应该还有有些残留的东西影响了编译。

这就是为啥建议一定要搞一个纯净的操作系统的原因。

4.3、问题三:ninja.exe is not recognized as an internal or external command operable program or batch file

 这个ninja.exe是在编译过程中生成的执行程序,但因为某个未知原因造成此次编译没有正常生成(怀疑是因为没有把vs2015设置成英文有关,虽然把vs2015设置成英文之后还是会报这个错误doge,也有可能是因为没有把nmake所在目录添加至环境变量)

我解决这个问题的方式是把前面编译时(虽然最终没有编译成功,但是ninja.exe生成成功了)生成的ninja.exe给拷贝到指定目录中:

 我会把这个ninja.exe同样放到网盘中,以防有遇到同样的问题的。

5、引用

5.1、官方教程

QT中关于编译QtWebEngine的教程并不多,偶然间找到了一个官方介绍编译QtWebEngine的说明,非常简单:

链接:Qt Tutorial - Build QtWebEngine from source。

5.2、其它引用

官方的文档总是很简单,但是实际操作中总是会出现很多问题,下面是参考的一下其它的文档:

1)visual studio - How to compile Qt webengine (5.11) on Windows with proprietary codecs - Stack Overflow。

2)解决QWebEngineView无法播放H5 Mp4问题_粗心的郑先生的博客-CSDN博客。

3)解决QtWebEngine无法播放H5中的mp4_二丶九的博客-CSDN博客。

4)Qt5 编译 Qt WebEngine_帅气转身而过的博客-CSDN博客。

5)VS2017+Qt5.12.7-重新编译webengine-MP4播放的问题 - 简书。

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

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

相关文章

前端品优购项目准备工作

网站制作流程: 初稿审核:网页美工会制作原型图和psd效果图 品优购项目规划: 1 品优购项目整体介绍 描述:电商网站,要完成PC端首页,列表页,注册页面的制作 2 品优购项目学习目的 电商类网站比…

nRF Connect for Desktop[自己的APP环境搭建]

本文源码仓库地址:https://github.com/NordicSemiconductor/pc-nrfconnect-ble/blob/main/package.json nRF Connect for Desktop是nordic自己做的一个PC端的蓝牙工具,配合nordic的dongle可以实现蓝牙的很多功能,要浏览本文要有如下知识储备: 1.nRF Connect for Desktop的APP是…

ELFK集群部署与Logstash的过滤模块

ELFK集群部署与Logstash的过滤模块ELFK集群部署与Logstash的过滤模块一、ELFK集群部署(FilebeatELK)Filebeatfilebeat 结合 logstash 带来好处:1.1 部署ELK集群1.2 安装Filebeat(Apache节点)1.3 设置 filebeat 的主配置…

TimeSformer:Is Space-Time attention all you need for video understanding?

【实践】CV领域的Transformer模型TimeSformer实现视频理解 - 飞桨AI Studio本项目选取CV中的transformer模型TimeSformer进行项目开发,在UCF101数据集上训练、验证、评估 - 飞桨AI Studiohttps://aistudio.baidu.com/aistudio/projectdetail/3413254?contributionT…

Zookeeper系列文章-Curator

之前我们讲解了Zookeeper安装与Zookeeper常用命令讲解 linux安装Zookeeper3.5.7详解_兜兜转转m的博客-CSDN博客 Zookeeper系列文章—入门_兜兜转转m的博客-CSDN博客 由于我们需要利用Java进行开发,因此我们使用Curator对Zk进行操控 导入依赖,由于使用…

作业-11.22

1、TCP服务器和客户端交互 服务器 #include <stdio.h> #include <sys/types.h> #include <sys/socket.h> #include <arpa/inet.h> #include <netinet/in.h> #include <string.h> #include <unistd.h> #define ERR_MSG(msg) do{\ …

Java基础—反射

反射 我们来探讨Java中的一些动态特性&#xff0c;包括反射、注解、动态代理、类加载器等。利用这些特性&#xff0c;可以优雅地实现一些灵活通用的功能&#xff0c;它们经常用于各种框架、库和系统程序中&#xff0c;比如&#xff1a; 1&#xff09;14.5节介绍的Jackson&…

MAC苹果电脑关闭系统完整性保护SIP

苹果电脑从 macOS 10.11 开始引入了系统完整性保护机制SIP&#xff08;System Integrity Protection&#xff09;&#xff0c;目的是帮助普通用户避免恶意 app 通过用户授权的方式获得所有系统权限。通过 System Integrity Protection&#xff0c;苹果实现了对第三方软件的限制…

SpringBoot SpringBoot 开发实用篇 5 整合第三方技术 5.14 SpringBoot 整合 quartz

SpringBoot 【黑马程序员SpringBoot2全套视频教程&#xff0c;springboot零基础到项目实战&#xff08;spring boot2完整版&#xff09;】 SpringBoot 开发实用篇 文章目录SpringBootSpringBoot 开发实用篇5 整合第三方技术5.14 SpringBoot 整合 quartz5.14.1 任务【定时任务…

Linux-cut

cut命令介绍 cut命令将文件的每一行剪切字节&#xff0c;字符和字段&#xff0c;并将这些字节&#xff0c;字符和字段写到标准输出 提取列&#xff0c;cut命令不能提取空格&#xff0c;可以是制表符或者其他字符 cut [选项][文件] 选项&#xff1a; -b&#xff1a;以字节为单…

2.5、信道的极限容量!

2.5、信道的极限容量&#xff01; 2.5.1、因素影响 由于信号在传输过程中会受到各种因素的影响 例如&#xff1a;这是一个数字信号 当它通过实际的信道后&#xff0c;波形会产生失真。 失真不严重时&#xff0c;在输出端还可根据已失真的波形还原出发送的码元 当失真严重…

G1D20-AnacondaCSKE综述AttacKG终于配好环境啦KG book CTF

先下一个anaconda emmmpipenv install requirements.txt好像不太好用&#xff0c;还不如pycharm中的自动安装 先读论文啦~ 一、CS KE综述 &#xff08;一&#xff09;NER systems 1、判别式模型&生成式模型 判别式模型&#xff1a;学习P&#xff08;Y|X&#xff09;&am…

C语言-结构体(7)

目录 思维导图&#xff1a; 1. 结构体的声明 1.1 结构的基础知识 1.2 结构的声明 1.3 结构成员的类型 1.4 结构体变量的定义和初始化 2. 结构体成员的访问 3. 结构体传参 写在最后&#xff1a; 思维导图&#xff1a; 1. 结构体的声明 1.1 结构的基础知识 结构是一些…

python一键去PDF水印,只需十行代码,超级简单...

用python制作去除 pdf 文件水印脚本前因后果去除水印原理代码剖析1、先查看PDF文档中的水印rgb值是多少2、pdf转换成图片&#xff0c;并去除水印3、图片转为pdf代码整合总结前因后果 弟弟最近要考试&#xff0c;临时抱佛脚在网上找了一堆学习资料复习&#xff0c;这不刚就来找…

机器学习-sklearn-高斯混合模型-学习笔记

文章目录前言一、如何估计参数二、二分类原生代码实现三、sklearn实现模型总结前言 学习笔记 学习视频&#xff1a;https://www.bilibili.com/video/BV1rB4y1v7dA/?spm_id_from333.788&vd_sourceaf83080eba7b379d3fda36e341bdb195 使用高斯混合模型的原因&#xff1a; 模…

03137计算机网络原 - 物理层

物理层 基础概念 OSI模型最底层 功能 为在链路实体间传送比特流而对物理连接的 接通 维持 和 拆除 提供机械,电气,功能和规程方面的方法作用 尽可能屏蔽现有多种多样的硬件设备,传输媒体和通信手段的差异。确保原始数据可以在各种物理媒介上传输任务特性 机械特性 指明接…

Linux环境变量与程序地址空间

Linux环境变量与程序地址空间 文章目录Linux环境变量与程序地址空间1.环境变量1.1 环境变量概念与深入理解1.2 代码获取环境变量的方法1.3 系统调用获取和设置环境变量的方法2.程序地址空间2.1 程序地址空间图(准确来说是进程地址空间图)2.2 程序地址空间的验证2.3 进程地址空间…

概率论中的几个重要悖论问题

1. 蒙提霍尔问题&#xff08;三门问题&#xff09; 三门问题&#xff08;Monty Hall problem&#xff09;亦称为蒙提霍尔问题、蒙特霍问题或蒙提霍尔悖论&#xff0c;大致出自美国的电视游戏节目Lets Make a Deal。问题名字来自该节目的主持人蒙提霍尔&#xff08;Monty Hall&…

【笑小枫的SpringBoot系列】【十八】SpringBoot中的Properties配置

本文简介&#x1f3a8; 随着我们的演示功能越来越多&#xff0c;里面的配置也越来越多&#xff0c;我们怎么更好的来管理这些配置呢&#xff1f; 实际项目中&#xff0c;我们肯定会有开发环境、测试环境、生产环境&#xff0c;我们又该怎么便捷的配置这些环境呢&#xff1f; …

CANopen之SDO,PDO

一、简述 CAN 总线是一种串行通信协议&#xff0c;具有较高的通信速率的和较强的抗干扰能力&#xff0c;可以作为现场总线应用于电磁噪声较大的场合。由于 CAN 总线本身只定义ISO/OSI 模型中的第一层&#xff08;物理层&#xff09;和第二层&#xff08;数据链路层&#xff09…