1. 程式人生 > >動態庫(.dll)的建立與使用———VS編譯器實現

動態庫(.dll)的建立與使用———VS編譯器實現

一、動態庫的概念

①概念:動態庫連結時不復制,程式執行時由系統動態載入到記憶體,供程式呼叫。而且系統只加載一次,可以被多個程式共用。
②特點:

  • 動態函式庫在編譯的時候並沒有被編譯進目的碼中,需要用到相應的功能,程式碼才會被呼叫到程式中,節約記憶體
  • 動態庫的改變,程式也會跟著動態變化,升級更新比較方便

③動態庫的生成與使用:

  • 動態庫的使用需要生成.dll與.lib兩個檔案
  • .dll儲存著類、函式等程式碼的地址,.lib檔案儲存著類、函式等的實體,程式執行時,通過.dll檔案中的地址找到.lib中的程式碼並連結程序序
  • .lib檔案需要提供介面,才能被外界呼叫,建立介面的方法是:在向外界提供程式碼的前面加_declspec(dllexport)
  • 如果不加_declspec(dllexport),動態庫只生成.dll檔案,不會生成.lib檔案。同時,若程式中只有一部分程式碼加了_declspec(dllexport),則只有這部分程式碼才可以被外界呼叫,其它的不可以

二、VS編譯器下動態庫的建立

方法:

  1. 一個專案建議完成後,在屬性中將配置型別改為動態庫(.dll),並生成解決方案
  2. 在專案路徑的上一路徑Debug資料夾下會生成一個.dll檔案與.lib檔案
    在這裡插入圖片描述
    在這裡插入圖片描述

三、VS編譯器下動態庫的呼叫

動態庫的呼叫分為三步曲,建議一個工程後:

  1. 將.dll與.lib與.h檔案放在工程的同目錄下
  2. 在程式碼中匯入標頭檔案,解決資源方案管理器中也加入標頭檔案
  3. 呼叫動態庫:分為顯示呼叫和隱式呼叫

顯示呼叫:

//在程式碼中加入,前提:工程資料夾下含有.lib檔案
#pragma comment(lib,"動態庫.lib")

或者在解決資源方案管理器中新增.lib檔案:資原始檔——>新增現有項(動態庫.lib)
隱式呼叫:

  1. 設定包含目錄:屬性==>配置屬性==>VC++目錄==>包含目錄(填.h所在檔案路徑)
  2. 設定庫目錄:屬性==>配置屬性==>VC++目錄==>庫目錄(填.lib所在路徑)
  3. 設定附加依賴項:連結器==>輸入==>附加依賴項==>新增.lib的名稱(動態庫.lib)

:如果工程下已經包含了.h與.lib檔案,包含目錄和庫目錄可以不設定(建議設定),但附加依賴項必須設定
但是如果工程下不包含.h與.lib檔案,就要設定.h與.lib所在的路徑
在這裡插入圖片描述
在這裡插入圖片描述
在這裡插入圖片描述

四、總結

以上即為動態庫創建於呼叫的所有內容
如有疑問,Q:1286550014