VS2015動態庫使用示例
一、庫基礎知識
已經寫好並且可以進行復用的程式碼,按照連結方式可分為兩種 :動態庫和靜態庫。他們在連結時起作用。
靜態庫:使用靜態連結方式,庫中的所有資料程式碼都將拷貝到呼叫程式的程式碼空間中去。也就是說你在哪呼叫了庫中的函式, 它會將被呼叫的函式的的資料程式碼全部拷貝到該位置。在連結階段就直接打包進可執行檔案中。
動態庫:用動態連結方式,在連結時dll並不拷貝入最終生成的.exe。在程式執行需要呼叫dll時,才會載入。
總之一句話:動態連結相比於靜態連結,生成的可執行檔案要小,但是執行時呼叫庫所花費的時間要長。
(好了,讓我真刀真槍的幹上一場吧哈哈哈)
二、VS2015使用動態庫簡單示例
1.開啟V2015 -> 建立win32專案
2.點選下一步
3.選擇DLL->選擇匯出符號(方便初學者使用) -> 選擇下一步(當然附加選項可以選上 匯出符號 ,會多一個介面,一般我是自己寫介面的)
4.開始編寫一個簡單的庫例程
我書寫的是一個HELLO函式
1.在DLL_Project.cpp中新增如下函式內容
2.在DLL_Project.h中新增如下函式宣告
3.點選生成解決按方案
出現如下檔案,拷貝複製到你需要這個庫的工程的可執行文檔案同級目錄下
4.新增.lib,點開工程屬性->連結器->常規->附加庫目錄->瀏覽選擇你.lib的路徑(當然也可以新增相對路徑,移植性更高,這裡使用絕對路徑)
5.點開 連結器 下的 輸入 選項 -> 附加依賴項 -> 填寫你的.lib全名
6.呼叫執行啦
執行結果
到這你是不是覺得結束了?那你就太天真了,就沒有想過為什麼我建立一個DLL工程,為啥會出現一個.lib嘛
哈哈哈哈,好好解釋下
靜態庫:在vs中新建生成靜態庫的工程,編譯生成成功後,只產生一個.lib檔案
動態庫:動態連結庫是一個包含可由多個程式同時使用的程式碼和資料的庫,DLL不是可執行檔案。動態連結提供了一種方法,使程序可以呼叫不屬於其可執行程式碼的函式。函式的可執行程式碼位於一個 DLL 中,該 DLL 包含一個或多個已被編譯、連結並與使用它們的程序分開儲存的函式。在vs中新建生成動態庫的工程,編譯成功後,產生一個.lib
靜態庫中的lib:該LIB包含函式程式碼本身(即包括函式的索引,也包括實現),在編譯時直接將程式碼加入程式當中動態庫中的lib:該LIB包含了函式所在的DLL檔案和檔案中函式位置的資訊(索引),函式實現程式碼由執行時載入在程序空間中的DLL提供 總之,lib是編譯時用到的,dll是執行時用到的。如果要完成原始碼的編譯,只需要lib;如果要使動態連結的程式執行起來,只需要dll。
特此鳴謝