2010-05-12 21 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),工人也沒有給他們(靜態鏈接)。