繁体   English   中英

删除msvc dlls依赖关系以运行qt应用程序

[英]remove msvc dlls dependency to run qt application

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

提前致谢

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

通常,正确的解决方案是在目标计算机上安装相应的Visual Studio可再发行软件包。 这不是“解决方法”或“黑客”,因为如果您希望使用使用不同的运行时库等构建的应用程序,则可以预期。 在这里您可以阅读更多有关它的内容:

重新分发Visual C ++文件

是的,这有点不幸,而且显然MS并没有设法使其成为最理想的产品,但是毕竟,它很容易绕开。 请注意,目标计算机不仅会给您的应用程序带来问题,而且通常还会出现任何以类似方式分发的问题。

解决该问题的另一种方法是使用与目标计算机上安装的环境相同的环境来构建应用程序,但是如果您需要将应用程序提供给具有通用设置的多台计算机,这很容易成为麻烦。 现在,我要说这是“骇人听闻”的方法。

您需要从此处获取针对此特定问题的可重新分发文件:

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

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

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

据我所知,您不能静态链接到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绝对无关。 它直接来自您选择的编译器。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM