【问题标题】:How to build a Qt C++ application that doesn't need VC Redistributables on a pc to run如何在 PC 上构建一个不需要 VC Redistributables 来运行的 Qt C++ 应用程序
【发布时间】:2021-12-30 06:57:01
【问题描述】:

我正在使用 Qt C++ 构建一个应用程序,我希望它可以在 Windows 计算机上运行,​​而无需安装 VC Redistributables。显然,当用户尝试运行应用程序时,会弹出一个错误提示 VCRUNTIME140.dll 丢失。

【问题讨论】:

  • VC Redistributables 不仅涉及 Qt 应用程序,还涉及任何已编译的 C++ 应用程序(在 Windows 上)。我相信无论如何都有必要要求用户预先安装 redist 或将它们包含在安装程序中以防它们丢失。 (当然,我们更喜欢后者,因为这对用户来说更方便。)
  • 仅供参考:MS: Choosing a Deployment Method 也许,我低估了这可能是 MSVC 特定问题的事实。 (我们从未在 Windows 上使用过其他任何东西。)不确定 MinGW 是否可以成为出路。但是,我也不确定这是否值得麻烦。在 MinGW 中编译也会产生问题...
  • 我只是将可再发行组件打包到基于 NSIS 的安装程序中,我有 CMake 为我的基于 Qt 的应用程序生成该安装程序。在大多数情况下,不需要安装可再发行组件,但它会在需要时安装。
  • @Scheff'sCat 对于在 Windows 上/为 Windows 编译的每个 C++ 应用程序,这绝对不是真的。例如,如果您使用 GCC 而不是 MSVC 进行编译,则不依赖于 VC Redistributable。
  • @Eric 这是我在2nd comment 中提到 MinGW 时提到的内容。我必须承认我对 MinGW 的经验非常少。 ;-)

标签: c++ qt msvcrt


【解决方案1】:

【讨论】:

    【解决方案2】:

    我建议使用 GCC(即 MinGW)作为编译器。如果您这样做,您的应用程序通常将依赖于 Windows 附带的 msvcrt.dll,并且不需要专门安装(但这取决于 GCC 编译器的具体配置方式)。它还可能依赖于一些 GCC 运行时库 DLL,您可以将它们放在与 EXE 相同的目录中。

    MSYS2 是一个很好的在 Windows 上使用 MinGW 的开发环境:https://msys2.org

    我还制作了一组有用的工具,能够从 Linux 交叉编译静态链接的 MinGW/Qt 应用程序:https://github.com/DavidEGrayson/nixcrpkgs

    我使用 nixcrpkgs 构建的 Qt 应用程序作为单个独立的 EXE 出现,不需要附带任何 DLL。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-04-15
      • 2011-05-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多