为什么有些C ++项目需要安装运行时包,而有些则不需要?
编辑:如何让项目在没有运行时的情况下工作?
答案 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 ++库的版本以及清单。