C++靜態庫與動態庫

原文連接地址:http://www.cnblogs.com/skynet/p/3372855.htmlhttp://www.javashuo.com/article/p-rfmlywut-gm.htmlhtml

靜態連接庫

  • 包含:頭文件 .h 、靜態庫 .lib
  • .lib包含了實際執行代碼、符號表等等。
  • .lib中的指令都所有被直接包含在最終生成的 EXE 文件中。
  • 靜態連接庫中不能再包含其餘的動態連接庫或者靜態庫。
  • 對函數庫的連接是放在編譯時期完成的。
  • 程序在運行時與函數庫沒有瓜葛,移植方便。
  • 浪費空間和資源。

動態連接庫

  • 包含:頭文件 .h 、導入庫 .lib 、動態庫 .dll
  • 其實際的執行代碼位於.dll中,.lib只包含了地址符號表等,確保程序找到對應函數的一些基本地址信息。
  • .dll沒必要被包含在最終exe文件中,exe文件執行時能夠「動態」地引用和卸載這個與 exe獨立的dll文件。
  • 動態連接庫中還能夠再包含其餘的動態或靜態連接。
  • 將庫函數的連接載入推遲到程序運行時期。
  • 能夠實現進程間的資源共享(所以也稱爲共享庫)。
  • 將一些程序升級變得簡單。
  • 能夠真正的作到連接載入徹底由程序員在程序代碼中控制(顯示調用)。

編譯過程

1

建立靜態庫過程

2

建立靜態庫

3

靜態庫與動態庫比較

45

相關文章
相關標籤/搜索