日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

VS2015动态库使用示例

發布時間:2023/12/31 编程问答 22 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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动态库使用示例的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。