lib是編譯時需要的,dll時運行時需要的。如果要完成源代碼的編譯,有lib就夠了。如果也是動態連接的程序運行起來,有dll就夠了。
一般的動態庫程序有lib文件和dll文件。lib文件時必須在編譯器就連接到應用程序中的,而dll文件時運行期才會被調用的。
如果有dll文件,那麼對於的lib文件一般是一些索引信息,具體的實現在dll文件中。
如果只有lib文件,那麼這個lib文件是靜態編譯出來的,索引和實現都在其中。
靜態編譯的lib文件有好處:給用戶安裝時就不需要再掛動態庫了。但也有缺點,就是導致應用程序比較大,而且失去了動態庫的靈活性,在版本升級時,同時要發布新的應用程序才行。
編譯是通過靜態鏈接庫(lib)去找接口的。eg: #pragma comment(lib,"libmysql.lib")