【问题标题】:Qt Application Deployment Problem in WindowsWindows 中的 Qt 应用程序部署问题
【发布时间】: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。如果是后者,请告诉我,我会跟进详细答复。

标签: windows qt visual-c++ boost-asio


【解决方案1】:

又为此工作了一天,我发现了这个问题。原来这是一个缺少dll的问题。虽然我使用过windeployqt,但它一定遗漏了一些重要的部分。

一旦我将 Qt/5.13//bin 目录中的所有 dll 复制到部署目录并运行 windeployqt 程序就可以正常运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-04-06
    • 2016-04-23
    • 2016-01-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多