3

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

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

4

4 回答 4

8

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

于 2009-04-02T08:56:53.747 回答
2

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

动态链接的优点:

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

动态链接的缺点:

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

静态链接的优点:

  • 没有依赖关系。
  • 更容易部署应用程序。

静态链接的缺点:

  • 可执行文件更大。

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

于 2009-04-02T09:55:49.753 回答
1

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

于 2009-04-02T08:58:49.470 回答
1

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

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

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

于 2009-04-02T11:08:09.253 回答