需要C ++运行时?

时间:2009-04-02 08:55:12

标签: c++ deployment runtime

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

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

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分:2)

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

动态链接的优点:

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

动态链接的缺点:

     
  • 对图书馆的依赖。
  •  
  • 部署更加困难。

静态链接的优点:

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

静态链接的缺点:

     
  • 可执行文件更大。

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

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

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

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