为什么有些 C++ 项目需要安装运行时包,而有些则不需要?
编辑:如何使项目在没有运行时的情况下工作?
有些将是静态链接的,而另一些将依赖于在运行时加载的动态库。要静态链接您自己的项目,您需要更改项目配置 - 如何执行此操作取决于您使用的编译器/链接器和/或 IDE。
一些应用程序是与系统库链接的,这是动态链接程序。其他程序包含库的代码到可执行文件中,这是静态链接程序。
动态链接的优点:
动态链接的缺点:
静态链接的优点:
静态链接的缺点:
要获取静态项目,您需要在项目属性中设置选项。
我认为这是指 VS2005 service pack 1 运行时。出于某种原因,MS 为其添加了一些非向后兼容的功能,因此任何使用 VS2005sp1 构建的应用程序都需要运行时来配合它。
您需要安装运行时包,以防您使用链接为 DLL 而不是静态库的标准 C/C++ 库。因此,避免它的一种方法是静态链接标准 C/C++ 库(C++ 项目设置)。在您的情况下可能会,也可能不会。
如果没有,您可以使用 Visual Studio 发行版中的依赖项遍历器工具来识别您的应用程序所需的 DLL,并将它们放在您的可执行文件附近。
在 Visual Studio 2005 及更高版本中您应该知道的是,二进制文件的清单可以(并且可能会:)让您的生活更加艰难。特别是因为 Visual Studio 2005 的 SP1 更改了 C++ 库的版本以及清单。