1. 程式人生 > >h lib dll文件相關部分

h lib dll文件相關部分

應用程序 錯誤 .com cnblogs 附加 鏈接器 入庫 如果 作用

參考:https://www.cnblogs.com/azbane/p/7364060.html

只對其中自己用得到的重點做了個筆記。

1..h頭文件是編譯時必須的,lib是鏈接時需要的,dll是運行時需要的。

2.附加依賴項的是.lib不是.dll,若生成了DLL,則肯定也生成 LIB文件。如果要完成源代碼的編譯和鏈接,有頭文件和lib就夠了。如果也使動態連接的程序運行起來,有dll就夠了(放在Debug文件夾裏)。在開發和調試階段,當然最好都有。

3..h .lib .dll三者的關系是:
  H文件作用是:聲明函數接口
  DLL文件作用是: 函數可執行代碼

  LIB文件的作用: 告訴鏈接器 調用的函數在哪個DLL中,函數執行代碼在DLL中的什麽位置

4.目前以lib後綴的庫有兩種。

  一種為靜態鏈接庫(Static Libary,以下簡稱“靜態庫”)。靜態庫是一個或者多個obj文件的打包。靜態庫本身就包含了實際執行代碼、符號表等等。

  另一種為動態連接庫(DLL,以下簡稱“動態庫”)的導入庫(Import Libary,以下簡稱“導入庫”)。對於導入庫而言,其實際的執行代碼位於動態庫中,導入庫只包含了地址符號表等,確保程序找到對應函數的一些基本地址信息。程序運行的時候再從DLL中尋找相應函數代碼,因此需要相應DLL文件的支持。

5.DLL和.LIB文件必須隨應用程序一起發行,否則應用程序將會產生錯誤。

6.靜態鏈接庫與動態鏈接庫都是共享代碼的方式,如果采用靜態鏈接庫,則無論你願不願意,lib 中的指令都全部被直接包含在最終生成的 EXE 文件中了,是在鏈接的時候將lib鏈接到目標代碼中。。但是若使用 DLL,該 DLL 不必被包含在最終 EXE 文件中,EXE 文件執行時可以“動態”地引用和卸載這個與 EXE 獨立的 DLL 文件。靜態鏈接庫和動態鏈接庫的另外一個區別在於靜態鏈接庫中不能再包含其他的動態鏈接庫或者靜態庫,而在動態鏈接庫中還可以再包含其他的動態或靜態鏈接庫。

h lib dll文件相關部分