2011-12-18 58 views
0

LIB和DLL有什麼不同?我在這裏讀了很多關於它的文章,但是有一些很好的,明確的答案,但是我寫的是要求澄清一件事。LIB和DLL的區別

當只有一個用戶時,使用LIB(靜態鏈接庫)會更好嗎?對於在PC上本地安裝的管理應用程序客戶端?當有多個併發用戶訪問使用vb6類的經典asp應用程序時,使用DLL(動態鏈接庫)會更好嗎?

+0

VB6只能夠創建動態ActiveX庫(除非暴露於瘋狂的技​​能,之後它也能夠創建本地動態庫)。但它無法創建靜態庫。那麼爲什麼標記爲VB6? – GSerg 2011-12-18 15:24:57

+0

當我編譯我的VB6項目;生成一個LIB文件和一個DLL文件。 – w0051977 2011-12-18 15:28:36

回答

4

LIB文件通常對應於一個靜態庫,這意味着您的應用程序使用的所有庫代碼都會直接編譯到您的應用程序中。

DLL文件代表應用程序鏈接到的動態庫,然後當您想使用庫中的代碼時,在應用程序運行時動態調用它。

當然,您也會經常看到動態鏈接庫的LIB文件。該文件包含鏈接器用於隱式鏈接到DLL的「存根」。

DLL(動態鏈接)的明顯好處是具有通用功能的一個DLL可以與使用相同功能的多個應用程序共享。錯誤修復可以在一個地方完成,並且只有一個組件必須更新才能讓所有應用程序利用這些修補程序。

如果您只有一個使用您的代碼的應用程序,那麼幾乎沒有理由將它放入DLL中。多臺計算機上的多個用戶將不得不擁有自己的DLL副本,因此在這種情況下將不會進行代碼共享。

所有這些說,我不知道這個問題與VB 6有什麼關係。據我所知,你只能用它來創建ActiveX DLL(它有不同的用例),它不能創建靜態庫。

+0

我添加VB6類別的原因是因爲它是一個VB6應用程序,但也許更通用的類別會更好。 VB6應用程序編譯時生成.LIB和.DLL。我註冊.dll,但不是.lib,應用程序沒有任何錯誤。爲什麼我不需要註冊.LIB? – w0051977 2011-12-18 15:39:17

+1

LIB文件是編譯和鏈接(make)過程的一部分。您從不在運行時使用LIB,也不會部署它。大多數程序不能使用LIB文件,而且我也不知道VB程序如何操作。隨着一些黑客入侵,你可能會建立一個基於LIB的規則DLL,但沒有優勢。留下吧。 – Bob77 2011-12-18 16:59:13

+0

我已經繼承了一些VB6應用程序(我來自Java背景)。看來,與其他VB6應用程序之一,一個VB6 LIB文件實際上是由一個經典的asp應用程序註冊和使用的。但我可能是錯的。 – w0051977 2011-12-18 17:10:24

相關問題