2010-05-12 22 views
3

这跟我从previous posting得到的结论是我缺乏一个用于软件安装的干净的测试机器。我在解释DLL依赖关系如何工作以及某些机器在安装时可能没有合适的库方面做得不好。问题在于它被视为构建过程的缺陷。我试图教育更高层次的人,这不是构建过程本身,而是责难的安装过程。说明DLL对外行人的依赖关系

下面是我的老板与分包商工作,我们的工作,把它放入观点报价:

我不是一个软件的人。我所看到的只是当他们向我们提供某些东西时,它就会起作用,但是当我们向客户提供某些东西时,存在各种各样的问题。你如何构建代码一定有问题。

当分包商应用程序到达时,它们可以直接复制到我们的开发机器上,因为我们的机器包含所有正确的Microsoft运行时库。然而,在客户机器上,并不是所有的机器都包含这些依赖关系。[/编辑]很容易看出某个聪明人(聪明聪明)是如何得出错误结论的。那么如何解释整个DLL依赖性问题呢?

+1

那么,我觉得他有一点 - 你的做法有问题。 – 2010-05-12 13:15:36

+0

是的,有。我试图把重点放在它属于哪里。 – wheaties 2010-05-12 13:17:27

+0

为什么不雇用其中一个分包商就他们如何成功做一个简短的介绍? – 2010-05-12 13:21:09

回答

2

你可以使用一个比较熟悉的比喻。就像搬进新办公室一样。

可以说你是一个承包商,你决定你要进入一个新的办公室。你列出了你认为在新办公室,互联网,电话,传真,复印机,压力球等方面需要的所有东西。然后你决定进入一个共享办公室,这个办公室已经有很多这样的东西,还有更多。所以你搬进去,你带着它现在还没有的东西,比如压力球,盆景树等。

你没有意识到的是,以及你列表中的所有东西都有您在共享办公室开始使用的其他一些东西,比如咖啡机,打孔器等等,您无意中做到了这一点,因此您不会将这些内容添加到“必需品”清单中。

然后你和共享办公室里的一些人混在一起,所以你决定,到底是什么,你会独自一人,并得到一个全新的空白办公室。所以你把你需要的所有东西都列出来,然后开始订购。大。除了当你搬到新鲜的办公室时,你意识到没有咖啡机,打孔器等。

所以,虽然你仍然像以前一样能够完成你的工作您需要的依赖关系不可用。

所以在这个'你'是你写的软件,办公室是你正在安装的机器,依赖关系是你的软件所依赖的东西,以及你需要它的安装构建过程的列表。

也许......

+0

非常感谢。这很完美。 – wheaties 2010-05-12 13:55:07

2

他是正确的,你所做的是错的,因为如果他们不标准的系统dll,你应该打包这些DLL与程序,可能使用一个安装程序,以获得系统上必要的先决条件。如果你不允许这样做,那么你需要做不同的事情,比如使用静态链接(必要的代码包含在可执行文件中)。

尽管如此,您可以用这个比喻来解释问题所在。

一个程序本质上是一个知道如何完成一项特定任务的工作人员(它可能是一个非常复杂的任务,有很多子任务或一个非常简单的任务,但最终只能完成一项任务)。为了完成这些任务,他必须使用一些工具 - DLL。

不同的任务需要不同的工具 - 就像你需要一把锯子,而不是一把锤子,如果你想削减一半的木板,你需要不同的DLL来完成不同的任务。

如果有合适的工具(DLL)中不可用,那么工人(程序)不能做他的工作,因为他的任务依赖于这些工具。如果他不能完成他的工作,他会告诉你“我没有这个工具,我需要它来做我应该做的事情。”

这就是你的客户正在发生的事情:你已经给他们工人(程序),但你没有给他们工具(DLL),工人也没有给他们(静态链接)。