導航:首頁 > 源碼編譯 > dll和源碼有什麼區別

dll和源碼有什麼區別

發布時間:2022-05-29 12:52:56

⑴ .exe文件和.dll文件有什麼區別

.exe文件和.dll文件最直接的區別是,前者是一個可以直接執行的程序文件,後者是一個不完整的程序文件,供執行程序運行時調用。

下面分別介紹兩種文件:

1、.exe是一種可在操作系統存儲空間中浮動定位的可執行程序,或者指WINDOWS操作系統中的二進制可執行文件。

.EXE文件包含一個文件頭和一個可重定位程序映象。文件頭包含MS-DOS用於載入程序的信息,例如程序的大小和寄存器的初始值。文件頭還指向一個重定位表,該表包含指向程序映象中可重定位段地址的指針鏈表。

EXEHEADER ENDS程序映象,包含處理器代碼和程序的初始數據,緊接在文件頭之後。它的大小以位元組為單位,等於.EXE文件的大小減去文件頭的大小,也等於exHeaderSize的域的值乘以16。MS-DOS通過把該映象直接從文件拷貝到內存載入.EXE程序然後調整定位表中說明的可重定位段地址。

2、.dll文件,DLL(Dynamic Link Library)文件為動態鏈接庫文件,又稱「應用程序拓展」,是軟體文件類型。

在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可使用多個DLL文件,一個DLL文件也可能被不同的應用程序使用,這樣的DLL文件被稱為共享DLL文件。

DLL文件中存放的是各類程序的函數(子過程)實現過程,當程序需要調用函數時需要先載入DLL,然後取得函數的地址,最後進行調用。使用DLL文件的好處是程序不需要在運行之初載入所有代碼,只有在程序需要某個函數的時候才從DLL中取出。另外,使用DLL文件還可以減小程序的體積。

⑵ 請問代碼和源代碼有什麼區別

一、指代不同

1、代碼:是程序員用開發工具所支持的語言寫出來的源文件,是一組由字元、符號或信號碼元以離散形式表示信息的明確的規則體系。

2、源代碼:指未編譯的按照一定的程序設計語言規范書寫的文本文件,是一系列人類可讀的計算機語言指令。

二、特點不同

1、代碼:原則包括唯一確定性、標准化和通用性、可擴充性與穩定性、便於識別與記憶、力求短小與格式統一以及容易修改等。

2、源代碼:最終目的是將人類可讀的文本翻譯成為計算機可以執行的二進制指令,這種過程叫做編譯,通過編譯器完成。


三、存儲方式不同

1、代碼:可以書籍或磁帶形式出現,但最為常用格式是文本文件,這種典型格式的目的是為了編譯出計算機程序。

2、源代碼:作為軟體的特殊部分,可能被包含在一個或多個文件中。一個程序不必用同一種格式的源代碼書寫。


⑶ dll庫和lib庫有什麼區別

關於dll庫和lib庫的區別如下:

1、使用場景不同:lib是編譯時用到的,dll是運行時用到的。

如果要完成源代碼的編譯,只需要 lib;如果要使動態鏈接的程序運行起來,只需要dll。

2、用途不同:如果有dll文件,那麼lib一般是一些索引信息,記錄了dll中函數的入口和位 置,dll中是函數的具體內容;如果只有lib文件,那麼這個lib文件是靜態編譯出來的,索引和實現都在其中。

使用靜態編譯的lib文件,在運行程序時 不需要再掛動態庫,缺點是導致應用程序比較大,而且失去了動態庫的靈活性,發布新版本時要發布新的應用程序才可以。

3、應用對象不同:動態鏈接的情況下,有兩個文件:一個是LIB文件,一個是DLL文件。LIB包含被DLL導出的函數名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到DLL 文件。

在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中相應函數代碼的地址,從而節省了內存資源。

DLL和LIB文件必須隨應用程序 一起發行,否則應用程序會產生錯誤。如果不想用lib文件或者沒有lib文件,可以用WIN32 API函數LoadLibrary、GetProcAddress裝載。

(3)dll和源碼有什麼區別擴展閱讀:

dll庫和lib庫使用方法:

1、使用lib的方法:

靜態lib中,一個lib文件實際上是任意個obj文件的集合,obj文件是cpp文件編譯生成的。在編譯這種靜態庫工程時,不會遇到鏈接錯誤;即使有錯,也只會在使用這個lib的EXT文件或者DLL工程里暴露出來。

在VC中新建一個static library類型的工程Lib,加入test.cpp文件和test.h文件(頭文件內包括函數聲明),然後編譯,就生成了Lib.lib文件。

2、使用dll的方法:

使用動態鏈接中的lib,不是obj文件的集合,即裡面不會有實際的實現,它只是提供動態鏈接到DLL所需要的信息,這種lib可以在編譯一個DLL工程時由編譯器生成。

參考資料來源:網路—lib

參考資料來源:網路—dll

⑷ 什麼叫dll吖

DLL文件即動態鏈接庫文件,是一種可執行文件,它允許程序共享執行特殊任務所必需的代碼和其他資源

比較大的應用程序都由很多模塊組成,這些模塊分別完成相對獨立的功能,它們彼此協作來完成整個軟體系統的工作。可能存在一些模塊的功能較為通用,在構造其它軟體系統時仍會被使用。在構造軟體系統時,如果將所有模塊的源代碼都靜態編譯到整個應用程序 EXE 文件中,會產生一些問題:一個缺點是增加了應用程序的大小,它會佔用更多的磁碟空間,程序運行時也會消耗較大的內存空間,造成系統資源的浪費;另一個缺點是,在編寫大的 EXE 程序時,在每次修改重建時都必須調整編譯所有源代碼,增加了編譯過程的復雜性,也不利於階段性的單元測試。

Windows 系統平台上提供了一種完全不同的較有效的編程和運行環境,你可以將獨立的程序模塊創建為較小的 DLL (Dynamic Linkable Library) 文件,並可對它們單獨編譯和測試。在運行時,只有當 EXE 程序確實要調用這些 DLL 模塊的情況下,系統才會將它們裝載到內存空間中。這種方式不僅減少了 EXE 文件的大小和對內存空間的需求,而且使這些 DLL 模塊可以同時被多個應用程序使用。Windows 自己就將一些主要的系統功能以 DLL 模塊的形式實現。

一般來說,DLL 是一種磁碟文件,以.dll、.DRV、.FON、.SYS 和許多以 .EXE 為擴展名的系統文件都可以是 DLL。它由全局數據、服務函數和資源組成,在運行時被系統載入到調用進程的虛擬空間中,成為調用進程的一部分。如果與其它 DLL 之間沒有沖突,該文件通常映射到進程虛擬空間的同一地址上。DLL 模塊中包含各種導出函數,用於向外界提供服務。DLL 可以有自己的數據段,但沒有自己的堆棧,使用與調用它的應用程序相同的堆棧模式;一個 DLL 在內存中只有一個實例;DLL 實現了代碼封裝性;DLL 的編制與具體的編程語言及編譯器無關。

在 Win32 環境中,每個進程都復制了自己的讀/寫全局變數。如果想要與其它進程共享內存,必須使用內存映射文件或者聲明一個共享數據段。DLL 模塊需要的堆棧內存都是從運行進程的堆棧中分配出來的。Windows 在載入 DLL 模塊時將進程函數調用與 DLL 文件的導出函數相匹配。Windows 操作系統對 DLL 的操作僅僅是把 DLL 映射到需要它的進程的虛擬地址空間里去。DLL 函數中的代碼所創建的任何對象(包括變數)都歸調用它的線程或進程所有。

調用方式:
1、靜態調用方式:由編譯系統完成對 DLL 的載入和應用程序結束時 DLL 卸載的編碼(如還有其它程序使用該 DLL,則 Windows 對 DLL 的應用記錄減1,直到所有相關程序都結束對該 DLL 的使用時才釋放它,簡單實用,但不夠靈活,只能滿足一般要求。
隱式的調用:需要把產生動態連接庫時產生的 .LIB 文件加入到應用程序的工程中,想使用 DLL 中的函數時,只須說明一下。隱式調用不需要調用 LoadLibrary() 和 FreeLibrary()。程序員在建立一個 DLL 文件時,鏈接程序會自動生成一個與之對應的 LIB 導入文件。該文件包含了每一個 DLL 導出函數的符號名和可選的標識號,但是並不含有實際的代碼。LIB 文件作為 DLL 的替代文件被編譯到應用程序項目中。
當程序員通過靜態鏈接方式編譯生成應用程序時,應用程序中的調用函數與 LIB 文件中導出符號相匹配,這些符號或標識號進入到生成的 EXE 文件中。LIB 文件中也包含了對應的 DL L文件名(但不是完全的路徑名),鏈接程序將其存儲在 EXE 文件內部。
當應用程序運行過程中需要載入 DLL 文件時,Windows 根據這些信息發現並載入 DLL,然後通過符號名或標識號實現對 DLL 函數的動態鏈接。所有被應用程序調用的 DLL 文件都會在應用程序 EXE 文件載入時被載入在到內存中。可執行程序鏈接到一個包含 DLL 輸出函數信息的輸入庫文件(.LIB文件)。操作系統在載入使用可執行程序時載入 DLL。可執行程序直接通過函數名調用 DLL 的輸出函數,調用方法和程序內部其 它的函數是一樣的。

2、動態調用方式:是由編程者用 API 函數載入和卸載 DLL 來達到調用 DLL 的目的,使用上較復雜,但能更加有效地使用內存,是編制大型應用程序時的重要方式。

顯式的調用:
是指在應用程序中用 LoadLibrary 或 MFC 提供的 AfxLoadLibrary 顯式的將自己所做的動態連接庫調進來,動態連接庫的文件名即是上面兩個函數的參數,再用 GetProcAddress() 獲取想要引入的函數。自此,你就可以象使用如同本應用程序自定義的函數一樣來調用此引入函數了。在應用程序退出之前,應該用 FreeLibrary 或 MFC 提供的 AfxFreeLibrary 釋放動態連接庫。直接調用 Win32 的 LoadLibary 函數,並指定 DLL 的路徑作為參數。LoadLibary 返回 HINSTANCE 參數,應用程序在調用 GetProcAddress 函數時使用這一參數。GetProcAddress 函數將符號名或標識號轉換為 DLL 內部的地址。程序員可以決定 DLL 文件何時載入或不載入,顯式鏈接在運行時決定載入哪個 DLL 文件。使用 DLL 的程序在使用之前必須載入(LoadLibrary)載入DLL從而得到一個DLL模塊的句柄,然後調用 GetProcAddress 函數得到輸出函數的指針,在退出之前必須卸載DLL(FreeLibrary)。

⑸ windows中LIB和DLL的區別與使用

關於lib和dll的區別如下:
(1)lib是編譯時用到的,dll是運行時用到的。如果要完成源代碼的編譯,只需要lib;如果要使動態鏈接的程序運行起來,只需要dll。
(2)如果有dll文件,那麼lib一般是一些索引信息,記錄了dll中函數的入口和位置,dll中是函數的具體內容;如果只有lib文件,那麼這個lib文件是靜態編譯出來的,索引和實現都在其中。使用靜態編譯的lib文件,在運行程序時不需要再掛動態庫,缺點是導致應用程序比較大,而且失去了動態庫的靈活性,發布新版本時要發布新的應用程序才行。
(3)動態鏈接的情況下,有兩個文件:一個是LIB文件,一個是DLL文件。LIB包含被DLL導出的函數名稱和位置,DLL包含實際的函數和數據,應用程序使用LIB文件鏈接到DLL文件。在應用程序的可執行文件中,存放的不是被調用的函數代碼,而是DLL中相應函數代碼的地址,從而節省了內存資源。DLL和LIB文件必須隨應用程序一起發行,否則應用程序會產生錯誤。如果不想用lib文件或者沒有lib文件,可以用WIN32 API函數LoadLibrary、GetProcAddress裝載。

⑹ e語言注入器和DLL源碼是什麼意思

注入器是一個軟體
而DLL源碼是你要注入到某個進程的文件
也就是輔助工具或者什麼的

⑺ 誰知道.dll是什麼意思,有什麼用

DLL文件即動態鏈接庫文件,是一種可執行文件,它允許程序共享執行特殊任務所必需的代碼和其他資源。Windows提供的DLL文件中包含了允許基於Windows的程序在Windows環境下操作的許多函數和資源。

DLL多數情況下是帶有DLL擴展名的文件,但也可能是EXE或其他擴展名。它們向運行於Windows操作系統下的程序提供代碼、數據或函數。程序可根據DLL文件中的指令打開、啟用、查詢、禁用和關閉驅動程序。

DLL是Dynamic Link Library的縮寫,意為動態鏈接庫。在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。一個應用程序可有多個DLL文件,一個DLL文件也可能被幾個應用程序所共用,這樣的 DLL文件被稱為共享DLL文件。DLL文件一般被存放在C:\Windows\System目錄下

動態鏈接庫DLL(Dynamic Link Library)是一個可以被其它應用程序共享的程序模塊,其中封裝了一些可以被共享的常式和資源。動態鏈接庫文件的擴展名一般是dll,它和可執行文件(exe)非常類似,區別在於DLL中雖然包含了可執行代碼卻不能單獨執行,而應由Windows應用程序直接或間接調用。

動態鏈接庫—優點
1. 共享代碼、資源和數據
使用DLL的主要目的就是為了共享代碼,DLL的代碼可以被所有的Windows應用程序共享。
2. 隱藏實現的細節
DLL中的方法可以被應用程序訪問,而應用程序並不知道這些方法的細節。
3. 拓展開發工具的功能
由於DLL是與語言無關的,因此可以創建一個DLL,被C++、VB或任何支持動態鏈接庫的語言調用。這樣如果一種語言存在不足,就可以通過訪問另一種語言創建的DLL來彌補。

⑻ 什麼是DLL文件有何作用

DLL(Dynamic Link Library)文件即庫文件,是動態鏈接庫文件,又稱「應用程序拓展」,是軟體文件類型。

在Windows中,許多應用程序並不是一個完整的可執行文件,它們被分割成一些相對獨立的動態鏈接庫,即DLL文件,放置於系統中。當我們執行某一個程序時,相應的DLL文件就會被調用。

(8)dll和源碼有什麼區別擴展閱讀

你可以簡單的把DLL看成一種倉庫,它提供給你一些可以直接拿來用的變數、函數或類。在倉庫的發展史上經歷了「無庫-靜態鏈接庫-動態鏈接庫」的時代。

靜態鏈接庫與動態鏈接庫都是共享代碼的方式,如果採用靜態鏈接庫,則無論你願不願意,lib中的指令都被直接包含在最終生成的EXE文件中了。

但是若使用DLL,該DLL不必被包含在最終EXE文件中,EXE文件執行時可以「動態」地引用和卸載這個與EXE獨立的DLL文件。靜態鏈接庫和動態鏈接庫的另外一個區別在於靜態鏈接庫中不能再包含其他的動態鏈接庫或者靜態庫,而在動態鏈接庫中還可以再包含其他的動態或靜態鏈接庫。

參考資料來源:網路-庫文件

⑼ 什麼是源代碼

源代碼是用特定編程語言編寫的人類可讀文本,源代碼的目標是為可以轉換為機器語言的計算機設置准確的規則和規范。因此,源代碼是程序和網站的基礎。

源代碼可以存在於每個軟體中,軟體按照源代碼中的編程進行執行,常用的格式是文本文件,計算機源代碼的最終目的是將人類可讀的文本翻譯成為計算機可以執行的二進制指令,這種過程叫做編譯,通過編譯器完成。

(9)dll和源碼有什麼區別擴展閱讀:

概念研究

一、理論上的概念

源代碼是相對目標代碼和可執行代碼而言的。

源代碼就是用匯編語言和高級語言寫出來的代碼。

目標代碼是指源代碼經過編譯程序產生的能被cpu直接識別的二進制代碼。

可執行代碼就是將目標代碼連接後形成的可執行文件,當然也是二進制的。

二、最直觀的概念

在這個網頁上右鍵滑鼠,選擇"查看源文件".出來一個記事本,裡面的內容就是此網頁的源代碼.

關於兩者的區別聯系:

1、從字面意義上來講,源文件是指一個文件,指源代碼的集合。源代碼則是一組具有特定意義的可以實現特定功能的字元(程序開發代碼).

2、"源代碼"在大多數時候等於"源文件".

比如在這個網頁上右鍵滑鼠,選擇查看源文件。出來一個記事本,裡面的內容就是此網頁的源代碼."這句話就體現了他們的關系,此處的源文件是指網頁的源文件,而源代碼就是源文件的內容,所以又可以稱做網頁的源代碼。.

源代碼是指原始代碼,可以是任何語言代碼。

匯編碼是指源代碼編譯後的代碼,通常為二進制文件,比如DLL、EXE、.NET中間代碼、JAVA中間代碼等。

高級語言通常指C/C++、BASIC、C#、JAVA、PASCAL等等匯編語言就是ASM,只有這個,比這個更低級的就是機器語言了。

源程序源文件源代碼是一回事。

參考資料來源:網路-源代碼

閱讀全文

與dll和源碼有什麼區別相關的資料

熱點內容
javaoa開發 瀏覽:875
單片機的用途和使用方法 瀏覽:944
程序員在新公司上班 瀏覽:430
發信如何設置伺服器 瀏覽:77
源代碼查詢加密數字 瀏覽:605
附帶編譯 瀏覽:108
海康螢石雲app怎麼回放 瀏覽:404
寫一個編譯器怎麼寫 瀏覽:285
單片機蜂鳴器發聲原理 瀏覽:137
程序員那麼可愛陸離跳水是哪集 瀏覽:17
如何製作cdn伺服器 瀏覽:111
寫java加密程序 瀏覽:659
菜鳥數據分析pdf 瀏覽:291
單片機做實用東西 瀏覽:651
我的世界最強斗羅伺服器怎麼覺醒武魂 瀏覽:931
密友圈app怎麼切換用戶登錄 瀏覽:217
我把程序員當愛豆追 瀏覽:978
android判斷電話接通 瀏覽:646
大孔文件夾 瀏覽:785
反詐騙app在哪裡下載 瀏覽:527