vs工程動態庫和靜態庫學習心得

        vs下很多動態庫和靜態庫,首先庫的大概意思就是:現有的,可以複用的代碼。靜態庫後綴爲.lib(library),而動態庫後綴是.dll(Dynamic Link Library)。而一個vs程序執行大概分爲以下幾個步驟:預編譯 —— 編譯——彙編——鏈接。

       靜態庫對函數的鏈接是在編譯時期完成的,程序運行時與函數庫無聯繫,移植方便,缺點就是浪費空間和資源。而對於動態庫,編譯時,不會被鏈接到目標代碼中,在程序運行時,纔會載入。動態庫在內存中只拷貝一份,節約了空間。

        還得說明的是,在鏈接時,不管是動態庫還是靜態庫其實都有.lib文件。對於靜態庫來說,.lib包含了函數聲明和定義,而動態庫的.lib是聲明,.dll纔是定義。


接下來說明lib和dll的使用

使用lib庫的方法

          首先,在Visual Studio中"項目上右擊->屬性->連接器->常規->附加庫目錄"寫上.lib庫所在文件夾



附加庫目錄lib文件夾下內容圖:


可以看到,裏面全部是lib文件。

然後在 "項目->屬性->連接器->輸入->附加依賴項"中寫上.lib庫的名稱。

測試一下:首先只加載了opencv的lib,沒有加入桌面上庫的.lib


運行結果:可以看到報錯了


然後我們把目錄中的.lib名稱複製過來


再運行,成功了。


還有一種情況,在解決方案裏A,B兩個工程,B工程生成.lib庫給A工程用,那麼就右鍵A工程"引用->通用屬性->框架和引用->添加新引用"選擇B工程即可。


這裏擴充一下,在添加.lib名字時,如果文件較多,則可以如下:

首先新建一個帥選器:



在帥選器中,把所有的lib拉進來。



還有一種方法:我們在.lib目錄下,新建一個cmd.bat。然後輸入 dir ,裏面顯示了所有的.lib



然後在上面右鍵標記,選中所有lib,按下回車鍵 ,然後粘貼到附加依賴項。



使用DLL方法:

一種笨方法,將需要的dll文件複製到工程文件。



其他方法參考其他網站

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章