如何删除msvc dll(例如:msvcr100.dll)依赖关系来运行qt appliation? 我开发了一个qt应用程序,它在开发人员机器上运行得很好,但无法在任何其他机器上运行时出现错误消息“程序无法启动,因为您的计算机缺少MSVCR100.dll”。我可以通过在应用程序文件夹中复制该文件来解决此错误,但我不想复制,而是我想静态链接或以其他方式删除该依赖项。
提前致谢
答案 0 :(得分:4)
问题是您可能正在尝试在安装了与用于构建应用程序本身的版本不同的Visual Studio(MSVC)版本的计算机上运行应用程序。
通常,正确的解决方案是在目标计算机上安装相应的Visual Studio可再发行组件包。它不是“解决方法”或“黑客”,因为如果您希望使用使用不同运行时库等构建的应用程序,那么它是预期的。在这里,您可以阅读更多相关信息:
Redistributing Visual C++ Files
是的,这有点不幸,显然MS并没有设法让它成为最理想的,但毕竟,它很容易规避。请注意,目标计算机不仅会出现您的应用程序问题,而且通常会以类似方式出现问题。
解决此问题的另一种方法是使用安装在目标计算机上的相同环境构建应用程序,但如果您需要将应用程序提供给具有多种设置的多台计算机,则很容易出现问题。现在,我想说这是“hackish”方法。
您需要从此处获取此特定问题的可再发行组件:
Microsoft Visual C++ 2010 Redistributable Package (x86)
Microsoft Visual C++ 2010 Redistributable Package (x64)
即使你以某种方式静静地攻击它,你也需要在使用带有DLL和静态库等的应用程序时处理令人讨厌的后果。
答案 1 :(得分:2)
据我所知,您无法静态链接到Visual Studio Redistributable。使用Visual Studio Compiler构建的任何应用程序都需要运行相应的msvcXXX.dll。包含每个特定版本MSVC的所有dll的安装程序可在此处获取:http://search.microsoft.com/en-us/DownloadResults.aspx?q=redistributable
如果您希望在分发应用程序时避免用户出错,则可以使用一些解决方案。常用的是在用户计算机上安装应用程序之前安装正确的可再发行组件包。经常使用的工具(NSIS,Inno Setup等)具有在该过程中运行其他可执行文件的选项。每个Microsoft redist包都可以静默运行(不向用户显示任何窗口)。
注意:此问题与qt完全无关。它直接来自您选择的编译器。