
这个问题问得好!
因为我也这样问过自己。
我作为 vc++ 和 linux c++的开发者很愿意讨论这个问题~
我们一个个来说。
你说游戏常用库,可能包括了类似 directX x.0 ,visual c++ Redistributable 20xx, 和 .net framework x.x 还有 windows xlive
我们姑且成这四个库为 “四大天王”吧
你不要急我们一步步分析:
首先,会报错原因很简单,游戏在你双击运行时,游戏程序好像一个手忙脚乱的小装配工,找着不同工具箱(各种库,包括四大天王),利用工具箱里面的工具装配着
游戏的各个功能机器部分(如网络,3d图像之类的功能模块),是游戏能够呈现出来。
突然小装配工发现没有螺丝刀(打比方vcredist.dll没有,这个dll库出现在visual c++ Redistributable 20xx库中)!! 小装配工找啊找啊,在自己知道的地方都招了个遍(如system32 syswow64等一些系统环境变量目录)。
可是小装配工没有人那么智能,他的责任是找不到就放弃(微软策划者设计的)。
最终,游戏报了 “未找到vcredist.dll” 之类的提示。
这时候人就纳闷了,vcredist.dll 是哪个库里面的? 是visual c++ Redistributable 20xx 还是 .net framework x.x里的?
这就害的我们要上网查,到底缺少的dll是 四大天王哪个里面的。
不是 程序员 或者 懂些电脑的人,还真挺麻烦~~
这确实不人性化,特别对于非程序员,这有一说一。
但也可以分析下原因,“未找到xxxxx.dll”是由于 编程时候使用“动态加载dll”函数功能,这个函数加载不到,游戏就说他找不到那个dll,如“未找到xxxxx.dll”。
这个提示是微软提示的,游戏引用了它。
游戏能不能提示人性化点呢? 把xxxxx.dll 属于哪个 “四大天王” 也说一下,不行吗?
答案:还真不太行,不是不行,成本太高。
你缺的这个 dll属于 visual c++ Redistributable 20xx 没问题, 可是属于 哪个版本 2011 2012 2013 2014, 各版本库内容部分不相同的。
这成本就出现了, 游戏程序员不但要会开发游戏, 还有知道 visual c++ Redistributable的内部结构,学习成本很高。
微软也不想让游戏程序员知道这么多,毕竟不是开源公司,不是为了教书育人,是为了money。
游戏公司也不想为了 这个人性化而买单。。就索性报一个 微软提供的一句话“未找到xxxxx.dll”。
这问题无解了吗?
其实 购买正版游戏,游戏光盘或者数字版, 游戏运行会自动检测缺少库,然后给你安装的。不会出现找不到dll。
可能 你这游戏是网上分享的, 那个分享作者没办法编程,成本太高。他只能附上可能需要的库, 可能有的人没附上安装库以及顺序,导致你
找不到dll。
为什么不做成update 或者 系统自带算了?
答:系统本身就很臃肿了,一个dvd都刻不下,像这种可要可不要的库,一般就不自带了,微软会提供下载。
update的话,其根本还是 为了升级, 使得原有功能更强大更稳定,修修补补。 这些库显然不是update概念,而是添加新功能。
如果这些库做成update,用户用不到的也会下一大堆,使系统变慢,用户也不知道哪些有用,哪些没用。
加之windows update很简约,只是必要安全漏洞 或 选择安装,还没有做到人性化, 这也是我们用一些 卫士的原因,他告诉我们这些东西大概干啥用的。
我的水平只够谈到这里了,从我个人总体对这个问题的认识来看。
计算机在国内普及了,但普及的是qq,看电影啊,word办公啊,这些计算机知识,计算机如何工作的,大部分人不知道的。
而计算机系统 不是很人性化, 很多自创词汇,诡异的报错, 对于非计算机相关人士,非常不友好。
这就是普通人和计算机之间的距离,为啥 linux,unix,没很多普通用户用,距离太远。
可能等我们大部分人都丰衣足食,买得起房子,也不羡慕有钱人,因为自己都够花了,为了理想而编程,而设计系统时候。
这些不人性化问题会得到解决,现在大到微软也不能考虑每个人的情况,那样成本太高,他们不愿意买单。
纯手打,就是你这个问题使我非常愿意分享
