【问题标题】:How to do I with missing dlls like msvcp100.dll, msvcp100.dll?如何处理缺少的 dll,如 msvcp100.dll、msvcp100.dll?
【发布时间】:2016-01-29 19:40:42
【问题描述】:

用户机器可能没有msvcp100.dll、msvcp100.dll等dll的情况如何处理?我不希望我的软件因为这种错误而没有安装在用户的机器上。我一直在考虑找到一个工具并将每个需要的 dll 复制到运行的可执行文件中,或者尝试构建一个static version of Qt(最后可能有相同的结果)。我见过不提供这些 dll 的应用程序,并且由用户来获取、安装等。对于这些用户来说,找到正确的 dll 匹配版本等等可能是个问题。我想避免它。

这在现实世界的应用程序中通常如何解决?

【问题讨论】:

  • 我为我的每个 Qt 应用程序创建了一个 NSIS 安装程序,并将 Visual Studio 可再发行组件作为安装的可选组件包含在内。虽然我的 Qt 版本是基于 CMake 的。

标签: c++ windows qt dll


【解决方案1】:

你在你的安装程序中redistribute他们。

【讨论】:

    【解决方案2】:

    Qt 应用程序的部署是一个不容易的问题。应该明白,您需要重新分发编译器的 dll 以及 Qt dll。对于 msvc 2010 编译器,您只需将 msvcp100.dllmsvcr100.dll 文件放在可执行文件附近即可。
    至于 Qt,windows 部署最简单的方法是使用windeployqt 命令提示实用程序。

    更新。 这在实际应用程序中通常如何解决?
    没有全自动工具,可以确定所有依赖关系,因为应用程序的部署是一项复杂的任务。例如,您的应用程序可能依赖于许多东西,例如库 dll、编译器的 dll、注册表项、驱动程序、环境变量、计算机重启要求、ActiveX/COM 组件、其他已安装的应用程序等...
    但是有一些工具可以帮助你解决这个问题。 它们可以为目标项目配置一次,然后一直工作。这叫Build Automation,另一个类似的概念是Continuous Integration
    至于为最终用户创建安装包,有很多工具如Nullsoft Scriptable Install SystemInno SetupQt Installer FrameworkWiX等...
    List of installation software.

    【讨论】:

    • 我在帖子中提到的 dll 只是示例。我正在考虑找到一种工具来自动完成这项工作。我只是想知道其他人是如何做到的。我已经在使用 windeployqt,但它不会复制我提到的那些 ms* dll。我是否遗漏了某些东西或 util 只处理 Qt 的 dll?
    【解决方案3】:

    安装程序脚本,放一条命令下载应用程序需要运行的dll,并在应用程序源代码中,把它使用dll的只有在它运行的文件夹中 如果您使用的是 NSI 安装程序,请使用此 example

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-06-14
      • 1970-01-01
      • 2014-02-12
      • 2011-04-15
      • 2020-09-01
      • 2014-08-31
      相关资源
      最近更新 更多