【问题标题】:remove msvc dlls dependency to run qt application删除 msvc dll 依赖以运行 qt 应用程序
【发布时间】:2014-01-29 08:01:44
【问题描述】:

如何删除 msvc dll(例如:msvcr100.dll)依赖以运行 qt 应用程序? 我开发了一个 qt 应用程序,它在 dveloper 机器上运行得很好,但无法在任何其他机器上运行,给出错误消息“程序无法启动,因为您的计算机中缺少 MSVCR100.dll”。我可以通过在应用程序文件夹中复制该文件来解决此错误,但我不想复制,而是想静态链接或以其他方式删除该依赖关系。

提前致谢

【问题讨论】:

  • 你得到你想要的答案了吗?
  • 是的,仅来自该论坛的两个答案。blog.diplix.de/2011/08/23/… 展示了静态链接如何解决。

标签: c++ windows visual-studio qt visual-c++


【解决方案1】:

问题是您可能正尝试在安装了与用于构建应用程序本身的版本不同的 Visual Studio (MSVC) 版本的机器上运行应用程序。

通常,正确的解决方案是在目标机器上安装相应的 Visual Studio 可再发行包。这不是“解决方法”或“hack”,因为如果您希望使用使用不同运行时库等构建的应用程序,那么这是可以预期的。在这里你可以阅读更多关于它的信息:

Redistributing Visual C++ Files

是的,有点可惜,显然MS没能做到最理想,但毕竟规避起来很简单。请注意,目标机器不仅会与您的应用程序存在问题,而且通常会与以类似方式分发的任何应用程序存在问题。

解决此问题的另一种方法是使用安装在目标机器上的相同环境构建应用程序,但如果您需要将应用程序提供给具有多种设置的多台机器,这很容易出错。现在,我会说这是“hackish”方法。

您需要从此处获取针对此特定问题的可再发行组件:

Microsoft Visual C++ 2010 Redistributable Package (x86)

Microsoft Visual C++ 2010 Redistributable Package (x64)

即使您以某种方式静态破解此问题,在将应用程序与 DLL 和静态库等一起使用时,您也需要处理令人讨厌的后果。

【讨论】:

    【解决方案2】:

    据我所知,您无法静态链接到 Visual Studio Redistributable。使用 Visual Studio 编译器构建的任何应用程序都需要相应的 msvcXXX.dll 才能运行。包含每个特定版本的 MSVC 的所有 dll 的安装程序可在此处获得:http://search.microsoft.com/en-us/DownloadResults.aspx?q=redistributable

    如果您希望在分发应用程序时避免用户出错,您有一些解决方案。一个常用的方法是在用户机器上安装应用程序之前安装正确的可再发行包。经常使用的工具(NSIS、Inno Setup 等)具有在进程中运行其他可执行文件的选项。并且每个 Microsoft redist 包都可以静默运行(无需向用户显示任何窗口)。

    注意:这个问题绝对和qt无关。它直接来自您选择的编译器。

    【讨论】:

      猜你喜欢
      • 2011-04-29
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-10-13
      • 2019-06-06
      • 1970-01-01
      • 2010-09-18
      相关资源
      最近更新 更多