【问题标题】:C++ runtime required?需要 C++ 运行时?
【发布时间】:2009-04-02 08:55:12
【问题描述】:

为什么有些 C++ 项目需要安装运行时包,而有些则不需要?

编辑:如何使项目在没有运行时的情况下工作?

【问题讨论】:

    标签: c++ deployment runtime


    【解决方案1】:

    有些是静态链接的,而另一些则依赖于在运行时加载的动态库。要静态链接您自己的项目,您需要更改您的项目配置 - 如何执行此操作取决于您使用的编译器/链接器和/或 IDE。

    【讨论】:

    • 如何让我的程序在没有安装运行时的情况下工作?
    • 要做到这一点,静态链接它 - 请记住,这会降低前向兼容性,这意味着您将无法利用 Windows 对库的更新,如果有安全性,这一点很重要相关功能
    【解决方案2】:

    一些应用程序是与系统库链接的,这是动态链接程序。 其他程序包含库的代码到可执行文件中这是静态链接程序

    动态链接的优点:

    • 可执行程序的大小更小。
    • 如果动态链接库是共享的,则内存消耗更少。
    • 更好的性能。

    动态链接的缺点:

    • 对库的依赖。
    • 部署更加困难。

    静态链接的优点:

    • 没有依赖关系。
    • 更轻松地部署应用程序。

    静态链接的缺点:

    • 可执行文件更大。

    要获取静态项目,您需要在项目属性中设置选项。

    【讨论】:

    • 动态链接库通常会为全局变量(包括 vtables)添加一个间接级别。所以我会说它们在某些特殊情况下具有“更好的性能”(想到内存受限)。
    【解决方案3】:

    我认为这是指 VS2005 Service Pack 1 运行时。出于某种原因,MS 为其添加了一些非向后兼容的功能,因此任何使用 VS2005sp1 构建的应用程序都需要运行时来配合它。

    【讨论】:

    • 这适用于 2005 年以后的所有 Visual Studio 版本
    【解决方案4】:

    您需要安装运行时包,以防您使用链接为 DLL 而不是静态库的标准 C/C++ 库。因此,避免它的一种方法是静态链接标准 C/C++ 库(C++ 项目设置)。在您的情况下可能会,也可能不会。

    如果没有,您可以使用 Visual Studio 发行版中的依赖项遍历器工具来识别您的应用程序所需的 DLL,然后将它们放在您的可执行文件附近。

    在 Visual Studio 2005 及更高版本中您应该注意的是,存在二进制文件的清单可以(并且可能会 :) 让您的生活更加艰难。特别是因为 Visual Studio 2005 的 SP1 更改了 C++ 库的版本以及清单。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-25
      • 1970-01-01
      • 2014-07-14
      • 1970-01-01
      • 1970-01-01
      • 2018-12-25
      • 2011-01-25
      • 2016-09-29
      相关资源
      最近更新 更多