通常一個 Windows 下 C/C++ 的動態連結函式庫(Dynamic-link library、維基百科、微軟的文件),會有三種東西:開發時使用的 header 檔、連結階段需要的 lib 檔、以及執行階段才需要的 dll 檔。
在這個架構下,實際上所有的程式都已經編譯好、儲存在 dll 檔案裡面了,實際上真的需要,也是可以在執行階段直接去讀取 dll、抓出裡面的函式來用的;但是在有 header 和 lib 的時候,開發上還是比較方便的。
而實際上,lib 檔主要的功能,就是告訴編譯器(其實是連結器)這個 dll 檔裡面有哪些函式可以用而已;在編譯的時候,系統只會去檢查 lib 的內容,而不會去管 dll 檔。