靜態鏈結庫和動態鏈結庫

2021-04-12 21:03:24 字數 463 閱讀 6309

其實再vc中,我們所用得所有api函式都封裝再下列三個dll檔案中

kernel32.dll :用於管理記憶體,程序和執行緒得各個函式

user32.dll:用於執行使用者介面任務,如視窗的建立和訊息的傳遞的各個函式

gdi32.dll :用於顯示文字和畫圖的各個函式

動態鏈結庫:

我們再使用動態庫的時候,往往需要提供兩個檔案,乙個引入庫,乙個dll,引入庫包含被dll匯出的函式和變數的符號名,dll包含實際的函式和資料,再編譯鏈結可執行檔案時,只需要鏈結引入庫,dll中的函式**和資料並不複製到可執行檔案中,執行的時候,再載入dll,訪問dll中到處的函式.

它的載入方式有隱式鏈結和動態載入兩種

靜態鏈結庫

函式和資料被編譯進乙個二進位制檔案中(通常的擴充套件名為.lib),再使用靜態庫的情況下,再編譯鏈結可執行檔案式時,鏈結器從庫中複製這些函式和資料並把他們和其他模組組合起來建立最終的可執行檔案.

靜態鏈結庫和動態鏈結庫

靜態鏈結庫 win32 static library 呼叫libtest.lib 動態dll win32 dynamic link library 跟librest的生成是一樣的 動態呼叫 成的.lib 和.dll 檔案拷入dllcall 工程所在的路徑,dllcall 執行下列 dll 中匯出函式...

靜態鏈結庫和動態鏈結庫

以前的時候寫過這方面的部落格,當時寫的時候都覺得已經懂了。今天閒著沒事幹,和咚哥他們去大華校招筆試遇到了這個問題。我突然間發現sdk沒寫三個月,把dll都忘記了。回來看了下,複習下。以前寫過程式的裝載和鏈結的部落格,那是os上面比較理論的。實際用函式庫的時候主要分為,靜態庫和動態庫,這裡就簡簡單單地...

靜態鏈結庫和動態鏈結庫

什麼是庫?庫是寫好的現有的,成熟的,可以復用的 現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的 都從零開始,因此庫的存在意義非同尋常。本質上來說庫是一種可執行 的二進位制形式,可以被作業系統載入記憶體執行。庫有兩種 靜態庫 a lib 和動態庫 so dll windows上對應的是.lib...