Windows 中的 Qt 应用程序部署问题
Posted
技术标签:
【中文标题】Windows 中的 Qt 应用程序部署问题【英文标题】:Qt Application Deployment Problem in Windows 【发布时间】:2019-08-13 23:06:17 【问题描述】:我正在为 Windows 10 部署 Qt 应用程序,当我尝试在 Qt Creator 之外运行它时出现错误 (0xc000a200)。
根据我的research,这看起来像是涉及“AppContainers”的 Windows 8+ 特定错误。
我已将 LTLINKOPTS = $(LTLINKOPTS) "/APPCONTAINER"
添加到我的 .pro 文件中,并将 /APPCONTAINER 添加到 makefile 中的 LFLAGS 中,但都没有解决问题。
另外,在此之前我确实运行过windeployqt,并且所有qt dll都存在于运行目录中。
.pro:
win32
INCLUDEPATH += C:/boost/
LIBS += -LC:/boost/stage/lib
Boost_USE_STATIC_LIBS = ON
LTLINKOPTS = $(LTLINKOPTS) "/APPCONTAINER"
非常感谢任何指导 - 这是我的第一次 Windows Qt 部署。
【问题讨论】:
Boost_USE_STATIC_LIBS
的语法看起来像 CMake 语法,而不是 qmake,所以我不确定它在这里有什么作用。因此,也许您缺少 Boost DLL。无论如何,您可以尝试使用 Dependency Walker (dependencywalker.com) 之类的依赖检查器来查看是否缺少任何 DLL。
嗨 - 不清楚您是打算分发一个包(msi 样式)还是仅仅构建一个完整的图像。如果是后者,则需要构建程序的静态版本,而这又需要 Qt 的静态版本。如果是前者,您需要查看doc.qt.io/qtinstallerframework/ifw-creating-installers.html。如果是后者,请告诉我,我会跟进详细答复。
【参考方案1】:
又为此工作了一天,我发现了这个问题。原来这是一个缺少dll的问题。虽然我使用过windeployqt,但它一定遗漏了一些重要的部分。
一旦我将 Qt/5.13//bin 目录中的所有 dll 复制到部署目录并运行 windeployqt 程序就可以正常运行。
【讨论】:
以上是关于Windows 中的 Qt 应用程序部署问题的主要内容,如果未能解决你的问题,请参考以下文章
如何在Windows XP上部署Qt 5.10 Quick 2应用程序?