回覆列表
  • 1 # Huddfg

    庫是寫好的現有的,成熟的,可以複用的程式碼。現實中每個程式都要依賴很多基礎的底層庫,不可能每個人的程式碼都從零開始,因此庫的存在意義非同尋常。比如你經常使用的STL(Standard Template Library)也是庫,有了STL你才能方便地使用std::string、std::cout這些類。本質上來說庫是一種可執行程式碼的二進位制形式,可以被作業系統載入記憶體,被別的程式呼叫執行。C++的庫有兩種:靜態庫和動態庫。將一個程式編譯成可執行檔案一般經過 預編譯–>編譯–>連結 這幾個過程,而靜態庫與動態庫的區別主要體現在連結這個過程。靜態庫:在連結階段,會將編譯的目標檔案.obj 與引用到的庫.lib 一起連結打包到可執行檔案exe(也稱為目的碼)中,程式執行時將不再需要該靜態庫。因此最終連結成的可執行檔案(.exe)體積較大。在Windows中一般以.lib為字尾名,在Linux中一般以.a為字尾名。動態庫:在連結階段,動態庫.dll並沒有真正被連線到目的碼中,只是將這個動態庫的宣告連結到目的碼中(這樣程式執行時才知道怎樣使用這個動態庫),動態庫.dll依然是獨立存在的,只有在程式執行是才會將.dll載入到記憶體中被程式呼叫。因此程式執行時必須要有這個動態庫且放在正確的路徑中。因此最終連結成的可執行檔案(.exe)體積較小。在Windows中一般以.dll為字尾名,在Linux中一般以.so為字尾

  • 中秋節和大豐收的關聯?
  • 如何將蘋果手機動圖變為照片?