2009年5月15日 星期五

什麼是DLL?

DLL 是動態連結程式庫, DLL提供一種方法,讓處理序 (Process) 呼叫不是可執行程式碼部分的函式。函式的可執行程式碼位於 DLL 裡,它包含一或多個已編譯、連結的函式,並且儲存在與使用它們的處理序不同的地方。 例如, 我們開發的Canvas, Gesture Handler, Rubik's Cube...等一些應用程式, 都會利用OTMUT.dll來開發Touch/Gesture的相關功能。 這有助於提升程式碼重複使用及有效率的記憶體使用量。

應用程式和 DLL 之間的差異?
雖然 DLL 和應用程式都是可執行程式模組, 但是它們在許多方面卻是不同。對使用者而言,最明顯的差異在於 DLL 不是可以直接執行的程式. 從系統觀點來看,應用程式和 DLL 之間有兩個基本差異:
  • 應用程式本身可以同時在系統中執行多個執行個體,而 DLL 只能有一個執行個體。
  • 應用程式可以擁有如堆疊、全域記憶體、檔案控制代碼 (File Handle) 和訊息佇列等,而 DLL 則不含這些
動態連結與靜態連結的差異?

動態連結(Dynamic Link Libraries)允許可執行模組 (.DLL 或 .EXE 檔) 只包含在執行階段時用來找出 DLL 函式可執行程式碼的所需資訊。
在靜態連結(Static-Link Libraries)中,連結器 (Linker) 會從靜態連結程式庫取得所有參考函式,並且將它與您的程式碼一起放入可執行檔,它的內容除了程式設計者所設計的程式碼之外,還包含了所使用程式庫的程式碼,所以其檔案變得相當大。

使用DLL的優點:
  • 使用較少的Resources
    當多個程式使用相同的Library時, DLL 可以減少重複的程式碼, 並且在執行時期需要時才載入, 這樣可以提升執行的效能。

  • 模組化結構升級
    DLL 有助於提升開發模組化的程式。 這可協助您開發大型的程式需要有多個語言版本或需要模組化結構的程式, 可降低應用程式的複雜度,程式更新維護時較方便。

  • 簡化Deployment Installation
    當函式在 DLL 內需要的更新程式或修正程式, 只要函式的引數和傳回值沒有改變,使用這些函式的應用程式就不需要重新編譯或重新連結。這樣的例子, 常發生在dll 要給 third-party應用程式來使用, 而library需要經常update或fix

沒有留言:

張貼留言