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 上部署 Qt 5 应用程序

在 Windows 上部署 Qt 5 应用程序

如何在Windows XP上部署Qt 5.10 Quick 2应用程序?

如何将基于 qt 的应用程序(在 Mac 上开发)部署到 Windows?

Qt 5 应用程序的平面目录部署?

在 Windows 上部署 Qt (C++/QML) 应用程序