c++ - 删除 msvc dll 依赖以运行 qt 应用程序

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

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

提前致谢

最佳答案

问题是您可能正尝试在安装了与用于构建应用程序本身的版本不同的 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 和静态库等一起使用时,您也需要处理令人讨厌的后果。

关于c++ - 删除 msvc dll 依赖以运行 qt 应用程序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21042764/

相关文章:

c++ - 使用 boost::asio(pion 库)的 https 服务器提示 "no shared cipher"

c++ - 在每次 std::ofstream 调用时覆盖文件内容

Windows 上的 C++ : function to get allocated memory?

c++ - HeapCreate,Linux 中的 HeapAlloc,Linux 的私有(private)分配器

c++ - 类中的重载方法

windows - 批处理脚本 : Why doesn't redirecting stdout work in this scenario?

windows - 如何使证书可信且有效期超过一年

visual-studio - 为什么 "Copy to Output Directory"选择的措辞在位置之间会发生变化?

visual-studio - Visual Studio 2008/2010 - 专业与团队系统

对象与对象引用的 C++ 类型错误