我了解为什么使用C ++。这不是这个问题的意思。
当我安装游戏时,通常使用Steam(这些天我几乎只使用Steam)会安装可分发的C ++ 2005 Runtime。
我的问题是为什么会这样?八年前发布的运行时仍然流行的原因是什么?我最近安装的某些游戏的年龄稍大一些,因此假设开发时间为几年,则可以证明它是当时已经过尝试和测试的标准。
为什么游戏公司不使用较新版本的VC ++运行时?
我了解为什么使用C ++。这不是这个问题的意思。
当我安装游戏时,通常使用Steam(这些天我几乎只使用Steam)会安装可分发的C ++ 2005 Runtime。
我的问题是为什么会这样?八年前发布的运行时仍然流行的原因是什么?我最近安装的某些游戏的年龄稍大一些,因此假设开发时间为几年,则可以证明它是当时已经过尝试和测试的标准。
为什么游戏公司不使用较新版本的VC ++运行时?
Answers:
公司不会随意升级VS。例如,我们在一个计划几年不发货的项目上使用了2010SP1。使用较新的版本意味着要购买IDE的新许可证,可能要购买我们使用的插件的新许可证,并且当然要冒一些尚未解决的令人震惊的漏洞的风险。我们已经为2010支付了费用,但知道2010将满足我们的需求。
我承认这有时让我很烦;我真的很想要最新的C ++ 11/14支持,AMP支持和改进的优化,但是那种“升级到新的闪亮”的心态与大型,更严肃的项目并不合适。
大多数公司实体在更新任何软件(无论是Visual Studio,Office,Windows,Perforce等)时都非常保守。尽管在当今的游戏中,Visual Studio 2005的使用非常少见,但2008年仍然很普遍。很少有人使用2012。很可能完全不会采用2012,而下一个流行的Visual Studio版本将是2013或2014。
例如,查看与Redhat Enterprise或Ubuntu LTS的发行节奏相比,面向发烧友的通用Linux发行版的更新速度如何。家庭用户和嗜好者可以更轻松地为升级辩护,而发烧友常常为他们辩护,但是企业通常希望尽可能少地改变。
今天的另一个因素是XBox 360的兼容性。如果特别需要一个版本的XBox兼容性,那么购买并安装两个版本的IDE /编译器是很愚蠢的。哪个下一个版本的VS在游戏中流行,将很大程度上取决于XBox One为其devkit的发行版推荐的编译器(2012年用于发布游戏的beta devkit,但建议在2013年以后发布)。发布标题)。
就编译器使用的运行时而言,这些运行时必须与使用中的编译器完全匹配。部分原因在于C和C ++的工作方式。接口由头文件定义,这实际上只是执行剪切粘贴的一种好方法。考虑展览A:
void foo(char* name, int length);
现在考虑展览B:
void foo(int length, char* name);
如果这些C函数包含在两个不同版本的运行时中,它们都是符号,_foo
但是编译为使用其中一个的代码显然不能用于另一个。虽然兼容性问题通常会涉及到一些微妙的问题,但最终结果仍然是相同的:使用VS2005编译的代码将具有VS2005的标头,该标头仅描述VS2005运行时的工作方式。VS2012附带了针对完全不同的运行时的完全不同的标头。
Microsoft不支持将较旧版本作为目标,因为那确实很痛苦。除了运行时之外,他们还必须发货,然后继续维护旧的标头。相对没有什么理由,因为Windows中良好的DLL使用习惯允许开发人员使用不同的运行时来混合库。如果您拥有VS2012,则仍然可以链接到VS2005制作的库,只要您和库遵循一些简单的规则即可。
诸如GNU / Linux之类的平台都在尽力避免这些问题,但是有时甚至更深入地解决了这些问题。我仍然记得从libc5到glibc的转换,或者频繁的libstdc ++中断(这是多年来Linux / UNIX开发人员对C ++保持相对冷淡的原因之一)。
Windows确实附带了一个称为“ C”的低级运行时MSVCR.DLL
,尽管每个版本的编译器都包含其自己的替代程序,例如MSVCRR110.DLL
。您可以尝试只使用通用版本,但是缺少很多功能,包括随每个Visual Studio版本(以及其不断发展的C ++支持)而变化的大多数C ++支持例程。除非您真的想制作一个零依赖的应用程序(恢复工具,OS工具,安全性工具等等有时都属于此类),否则通常不值得付出努力并失去功能。
简而言之,每个Visual Studio都有自己的运行时库,并且必须使用使用该版本编译的应用程序。通常,使用少于最前沿的编译器来编写游戏,因此需要较旧的运行时。
据我所知,Visual Studio 2008是能够构建Windows Mobile和Windows CE应用程序的最新版本。
我需要支持在CE设备上运行的应用程序,因此VS2008仍然是我所使用的。
对于我的Windows桌面应用程序,我使用VS2010 Pro的原因很简单,而不是拥有许可证。有用。我喜欢。而且我不明白为什么我应该花更多的钱购买一个实际上并不能使我的应用程序更好的新版本。