删除msvc DLL依赖运行qt应用程序

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

提前致谢

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

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

重新分发Visual C ++文件

是的,这有点不幸,显然MS并没有设法让它变得最理想,但毕竟它很简单。 请注意,目标机器不仅会在您的应用程序中遇到问题,而且会以类似的方式分发。

解决这个问题的另一种方法是在与目标机器上安装的环境相同的环境下构建应用程序,但是如果需要通过多种设置将应用程序提供给多台机器,则这可能很容易失灵。 现在,我会说这是“hackish”的方法。

您需要从这里获取有关此特定问题的可再发行信息:

Microsoft Visual C ++ 2010可再发行组件包(x86)

Microsoft Visual C ++ 2010可再发行组件包(x64)

即使你以某种方式静态黑客攻击,你也需要在使用DLL和静态库等应用程序时处理令人讨厌的后果。

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

如果您希望在分发应用程序时避免用户错误,则可以使用一些解决方案。 通常使用的是在用户机器上安装应用程序之前安装正确的可再发行组件包。 通常使用的工具(NSIS,Inno Setup等)可以选择在进程中运行其他可执行文件。 而且每个微软redist软件包都可以默默运行(没有任何窗口显示给用户)。

注意:这个问题是绝对不相关的QT。 它直接来自您选择的编译器。