首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用于Windows XP目标的QtWebEngine

用于Windows XP目标的QtWebEngine
EN

Stack Overflow用户
提问于 2015-07-28 22:04:18
回答 3查看 3.3K关注 0票数 3

我正在尝试构建Qt5.5,以便能够在Windows XP上运行QtWebEngine。下面是我设置环境的bat文件:

代码语言:javascript
复制
REM Set up \Microsoft Visual Studio 2013, where <arch> is \c amd64, \c x86, etc.
CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
SET _ROOT=%CD%
SET PATH=%_ROOT%\qtbase\bin;C:\Perl\bin;%_ROOT%\gnuwin32\bin;C:\devtools\Bitnami\rubystack-2.0.0-26\ruby\bin;C:\Python27;%PATH%
REM Uncomment the below line when using a git checkout of the source repository
REM SET PATH=%_ROOT%\qtrepotools\bin;%PATH%
SET QMAKESPEC=win32-msvc2013
SET _ROOT=

用于配置构建的bat文件

代码语言:javascript
复制
configure -debug-and-release -nomake examples -opensource -nomake tests -target xp -prefix c:\qt5\5.5\msvc2013-winxp

构建成功,但我无法使用QtWebEngine运行任何示例

是否可以为WinXP目标构建QtWebEngine,或者它与WinXP不兼容?

EN

回答 3

Stack Overflow用户

发布于 2015-09-22 16:28:47

适用于Windows XP的Qt WebEngine 5.5.0兼容性构建步骤

官方版本的问题

Qt 5.5.0正式发布的qwebengine模块与windows XP应用程序不兼容,即使您强制使用与XP兼容的编译/链接设置/标志( still可能仍然不兼容)项目二进制文件,并且您可以在XP下执行您的exe二进制文件,您无论如何也不能使用qwebengine模块-只是因为QtWebEnbineProcess.exe被构建为Windows XP的无效EXE。

为了使Qt WebEngine 5.5.0能够在winXP上运行,你必须用额外的选项方式重建Qt模块(正如前面所说的,Qt发行版根本不兼容,你必须构建一个新的)。在Windows QtWebEngine只能在Visual Studio2013中构建的情况下,无法在另一个版本的Visual Studio中构建chromium代码。通常情况下,Windows下的Qt和choose可以使用OpenGL或/和ANGLE项目(使用Direc3D9Ex或Direct3D11)对硬件图形操作的支持来构建,如果你为WinXP构建,你没有选择,你必须使用OpenGL(如果你有选择,这是最糟糕的选择),因为Direct3D9Ex/Direct3D11只能从Vista+安装。因此,请确保您已为运行程序计算机安装了更新的图形驱动程序,因为用于OpenGL的显卡的现有XP驱动程序将非常过时,可能无法有效工作。

问题发生

任何问题都是因为默认的Visual C++ 2013应用程序编译与XP(C运行时和EXE子系统)不兼容而发生的,但您仍然可以在Visual C++ 2013中更改和使用与WinXP兼容的运行时,如下所述:

http://blogs.msdn.com/b/vcblog/archive/2012/10/08/windows-xp-targeting-with-c-in-visual-studio-2012.aspx

因此,基本上您必须添加Windows SDK7.1A路径以包含、库和二进制文件,为Qt和or的每次cl编译器执行传递/D_USING_V120_SDK71_,并为链接器调用传递/SUBSYSTEM:WINDOWS,5.01或/SUBSYSTEM:CONSOLE,5.01,同时构建您的项目和QtWebEngineProcess.exe,不是吗?)

构建需求:

  1. Visual C++ 2013 (在我的案例中安装在标准位置: C:\Program Files (x86)\Microsoft Visual Studio12.0)
  2. Windows SDK7.1A-最后一个与Windows XP兼容的开发工具包,/D_USING_V120_SDK71_强制使用它(在我的案例中安装在标准位置: C:\Program Files (x86)\Microsoft Microsoft,用于构建铬: Git,Perl,Python,pscp.exe-您必须在build.
  3. OpenGL ES SDK之前将它们的二进制文件添加到PATH环境变量中才能使用我从AMD下载的D:\rzaba\qt\GLES_SDK).
  4. Qt ES 2.0实现(在我的例子中,不能加载到D:\rzaba\qt\src-5.5.0

5.5.0源代码-解包到OpenGL

(我不能粘贴更多的链接,因为我没有2分的声誉,OMG!:D)

构建过程

首先阅读这个:http://doc.qt.io/qt-5/windows-building.html,我们必须像这样做,但需要更多的步骤才能与XP兼容。

现在,如果源代码被解压并安装了所有内容,那么创建qt5vars.cmd,在我的例子中是这样的:

代码语言:javascript
复制
************************************************************************
REM ********** INITIALIZE ENV FOR MSVC 2013 CL COMPILER **********
SET PATH=C:\Windows;C:\Windows\system32
CALL "C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
REM ********** UPDATE INCLUDE & LIB TO SUPPORT XP WIN SDK 7.1A **********
SET PATH=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Bin;%PATH%
SET INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
SET LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Lib;%LIB%
SET CL=/D_USING_V120_SDK71_;%CL%
REM ********** INCLUDE OPENGL DESKTOP GLES SDK **********
SET PATH=D:\rzaba\qt\GLES_SDK\x86;%PATH%
SET INCLUDE=D:\rzaba\qt\GLES_SDK\include;%INCLUDE%
SET LIB=D:\rzaba\qt\GLES_SDK\x86;%LIB%
REM ********** 3D PARTY BUILD TOOLS BINARIES: PUTTY, RUBY, PERL, GIT, PYTHON ********** 
SET PATH=D:\putty;D:\Ruby22\bin;D:\Perl\bin;D:\Git;D:\Git\bin;D:\Git\cmd;D:\Python27;%PATH%
REM ********** SETUP QT QMAKE ENV **********
SET QMAKESPEC=win32-msvc2013
SET PATH=D:\rzaba\qt\src-5.5.0\qtbase\bin;D:\rzaba\qt\src-5.5.0\gnuwin32\bin;%PATH%
************************************************************************

通常,脚本为构建配置PATH、INCLUDE、LIB环境变量。在CL环境变量可以强制CL编译器设置,这是我们定义V120_XP平台用法的主要地方。

现在,在开始构建之前,您必须编辑源代码中的一些文件:

如果你有cl编译器标志,你必须删除'/WX‘标志,因为它会导致sdk7.1的编译失败。"if ():“

  1. 你必须删除’/WX‘标志:”if platform.is_msvc():“您还可以添加“/D_USING_V120_SDK71_”标志,以确保忍者工具也将定义为使用V120_xp。
  2. ,并且您必须编辑另一个文件: qtwebengine\src\process\process.pro并添加以下行:

win32:{

QMAKE_CXXFLAGS += /D_USING_V120_SDK71

QMAKE_LFLAGS_CONSOLE += /SUBSYSTEM:CONSOLE,5.1

QMAKE_LFLAGS_WINDOWS += /SUBSYSTEM:WINDOWS,5.1

}

您还应该将其添加到您的项目中。这将生成与XP兼容的QtWebEngineProcess.exe文件。如果没有此选项,Visual C++ 2013将为winXP生成无效的EXE文件。

如果您现在打开命令行并调用此脚本,则必须cd进入qt源目录并调用configure,这是我的配置:

configure -prefix d:您的安装路径在那里-确认-license -target xp -opensource -opengl桌面-调试并发布-nomake示例-nomake测试-无警告-是错误

所以我想要构建、调试和发布。如果一切都设置正确,您应该会看到一些编译过程,并为qt模块创建Makefiles。在调用nmake之后,编译需要几个小时,nmake install将复制/安装创建的库作为前缀。祝好运

请记住,图形设备必须支持OpenGL ES 2.0,否则在创建QWebView后,您的应用程序将被OpenGL驱动程序崩溃,或者窗口图形用户界面变黑。如果您想在旧机器上运行您应用程序,您可以构建Mesa OpenGL软件渲染器(我这样做了,性能非常慢,每个刷新窗口的图形用户界面内容几秒钟,但它可以工作),并使用它代替硬件驱动程序。

票数 7
EN

Stack Overflow用户

发布于 2015-08-31 21:50:58

您需要使用Visual Studio 2013中的编译器,但来自支持Windows XP (即7.1A)的Windows SDK的头文件/库:

代码语言:javascript
复制
"C:\Program Files (x86)\Microsoft Visual Studio 12.0\VC\vcvarsall.bat" x86
set INCLUDE=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\Include;%INCLUDE%
set LIB=C:\Program Files (x86)\Microsoft SDKs\Windows\v7.1A\lib;%LIB%
set CL=/D_USING_V110_SDK71_

但请注意,QtWebEngine需要一个有效的Qt快速堆栈(甚至是QtWebEngineWidgets!),这反过来又需要OpenGL。由于现有的Windows几乎不支持OpenGL,而ANGLE ( DirectX包装器)在Windows上也不起作用,你需要确保安装了一个像样的第三方OpenGL驱动程序,或者退回到一个软件opengl32.dll (例如来自mesa)。如果你有Qt许可证,你也可以依赖Qt Quick 2d渲染器。

票数 0
EN

Stack Overflow用户

发布于 2015-11-02 12:59:59

只需使用vs2013打开qtwebengine\src\process\process.pro,修改为"Visual Studio2013- Windows XP (v120_xp)“并重新构建QtWebEngineProcess.exe

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31678657

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档