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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

vs2013创建及使用DLL

發布時間:2023/12/10 编程问答 38 豆豆
生活随笔 收集整理的這篇文章主要介紹了 vs2013创建及使用DLL 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

? 這幾天看了許多關于生成Dll的博文,很有感觸,遂整理在此,以供自己后續參考。

VS2013創建DLL

我們使用vs2013來生成Dll,其實使用其他的版本也是同理如此。步驟如下:

? 單擊“新建項目”,選擇“Win32 項目”,選擇“下一步”,然后到了如下界面:

點擊“DLL”,并同時點擊“導出符號”。然后點擊“完成”。

值得說明的是:

為什么要導出符號呢?

這是因為“導出符號”,將為我們創建生成DLL的模板。




仔細觀察,vs自動為我們創建了導出變量nMakeDLL,導出函數fnMakeDLL,導出類CMakeDLL。如果上面沒有點擊“導出符號”,將不會生成這些。所以為了方便DLL的創建,我們最好還是使用“導出符號”。

接下來,你可以改寫上面的類和函數,然后點擊項目,選擇“生成”即可產生DLL和LIB。此處細節可參考《vs2010創建并使用DLL》。

細節的闡述

1.dllexport與dllimport的介紹

先看下面這段代碼:

#ifdef MAKEDLL_EXPORTS #define MAKEDLL_API __declspec(dllexport) #else #define MAKEDLL_API __declspec(dllimport) #endif

我們逐條解釋。

如果定義了MAKEDLL_EXPORTS,然后我們再定義MAKEDLL_API為__declspec(dllexport),否則我們定義__declspec(dllimport)。前者主要為生成DLL的項目所使用,后者為使用DLL的項目所使用。dllexport?和?dllimport?存儲類特性是 C 和 C++ 語言的 Microsoft 專用擴展。可以使用它們從 DLL 中導出或向其中導入函數、數據和對象。使用這兩個特性,將會優化導入導出,至于具體怎么優化,可參考msdn上的解讀《dllexport,dllimport》.

事實上MAKEDLL_EXPORTS在創建DLL時是默認定義的,每當創建一個新的DLL項目時,vs會自動生成MAKEDLL_EXPORTS,我們可以在項目的屬性中看到:


2.lib與dll的使用

而在引用一個新的dll時,比如我們采用靜態引用的方法時,我們一般需要dll的.h,.lib和.dll三個文件,這時我們在新建項目的“屬性”中選擇“C/C++”-》“常規”-》“附加包含目錄”,添加.h的路徑,在“鏈接器”—》“常規”-》“附加庫目錄”中添加.lib的路徑,同時我們還需要添加.lib的附加依賴項,這時可在“鏈接器”—》“輸入”—》“附加依賴項”,填寫**.lib?,最后還需要加載dll的路徑,此時有兩種方法最為常見。第一種,我們先直接運行程序,這時會出現一個錯誤,說“缺少什么dll”,我們只需將此前生成的dll,放在debug或release目錄下,即可編譯通過。第二種方法,直接將dll放在與.cpp同一目錄下,即可編譯通過。或者你也可以放在某一個新建的bin文件下,然后在項目的“path”中填寫.bin的路徑,如下所示:

填寫路徑時注意,前面的"path=%path%;" 必須有,后面可填寫絕對路徑相對路徑

另外我們再仔細講講lib的使用。

使用lib庫有兩個方法,一個是直接把lib引到工程目錄下,在需要用到的地方include一下就可以。代碼是:

#pragma comment(lib, "testCpp.lib")

另外一個方法是直接設置庫路徑,就不用把lib引到工程目錄下了。直接點開工程屬性,在配置屬性-》連接器-》常規-》附加庫目錄中添加庫





之后確認。

在配置屬性-》連接器-》輸入-》附加依賴項。如圖填寫



之后確定,運行工程就可以了。

總結一下,我們使用別人的庫時,如果想偷懶的話,將.h,.lib,.dll都放在工程目錄下,最后會發現我們需要在使用dll的main函數中加載上頭文件,再像第一種方法一樣,鏈接lib,就可以直接使用了。可參考文件:testDLL.zip

但是我更推崇另一種方法,就是我們單獨建立include,bin,lib文件夾,然后將他們分別按照上面的方法鏈接上。這樣如果要添加的庫比較多時,會更加整齊,可讀。

總的來說;.h,.lib,.dll的添加方法其實各有很多種,其中.h有兩種:

1. 直接放在工程目錄下

2. 建立include文件夾,放在里面,然后在項目屬性的“C/C++”-》“常規”-》“附加包含目錄”,添加.h路徑即可。

.lib的方法有兩種

1.直接放在工程目錄下

2.建立lib文件夾,放在里面,然后在項目屬性的“鏈接器”-》“常規”-》“附加庫目錄”,添加.lib路徑即可。

dll的方法有兩種

1.直接放在工程目錄下

2.建立bin文件夾,放在里面,然后在項目“環境”中添加bin的路徑

.lib的附加依賴項有2種:

1.在“鏈接器”——》“輸入”-》“附加依賴項”,填寫lib名稱

2.在main文件前面,添加語句:

#pragma comment(lib, "testCpp.lib")以上皆可以自由組合。



參考文獻:

1.演練:創建和使用動態鏈接庫 (C++)

2.?C++的dllexport和dllimport?

3.VS2013創建dll動態鏈接庫文件心得

4.VS2010創建并使用DLL













????????



總結

以上是生活随笔為你收集整理的vs2013创建及使用DLL的全部內容,希望文章能夠幫你解決所遇到的問題。

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