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文件和一個.dll文件
靜態庫中的lib:該LIB包含函數代碼本身(即包括函數的索引,也包括實現),在編譯時直接將代碼加入程序當中
動態庫中的lib:該LIB包含了函數所在的DLL文件和文件中函數位置的信息(索引),函數實現代碼由運行時加載在進程空間中的DLL提供
總之,lib是編譯時用到的,dll是運行時用到的。如果要完成源代碼的編譯,只需要lib;如果要使動態鏈接的程序運行起來,只需要dll。
?
參考https://blog.csdn.net/qq_17239003/article/details/78482145
特此鳴謝
?
總結
以上是生活随笔為你收集整理的VS2015动态库使用示例的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: winsmac最强滚动截屏工具
- 下一篇: oracle net config失败,