C++類 使用template 如何封裝為DLL
1. 建立一個win32專案,選擇dll建立,如果是已經編寫好的類,則可以勾選”空專案”。
2. 在“標頭檔案”目錄下建立新的標頭檔案,這裡以Node類為例:Node.h,將編寫好的Node的宣告寫入Node.h中。
3. 注意,一般類的封裝此時就應當寫Node.cpp從而實現該類中的一些成員方法,但是由於Node類使用了模板(template),因此需要將實現和宣告寫在同一個檔案中,所以這裡我們不再建立Node.cpp檔案,而是直接將成員函式的實現寫在Node.h中。
4. 另外,Node類的宣告也跟一般類宣告不一樣,一般Node的宣告是:
template <class T> class Node{...};
這裡由於要建立DLL封裝的類,於是我們按如下語法宣告:
template <class T> class __declspec(dllexport) Node{...};
這樣一來,其他專案就可以使用這個匯出的DLL檔案中的類了(“dllexport”)。
5. 接著進行編譯。在debug資料夾下會有Node.dll檔案。
6. 如果將要使用該DLL的專案是C++專案,那我們還缺少Node.lib,此時我們需要使用這個Node.dll生成其相應的lib檔案。(注:如果一開始選擇建立的Node專案是MFC DLL,則編譯會直接生成dll和lib檔案,但是檔案本身會很大,兩個dll的區別暫時不清楚)。
7. 使用lib命令就可以生成lib檔案:C://Program Files//Microsoft Visual Studio//VC98//Bin>LIB /out:D://Node.lib /MACHINE:IX86 /DEF:D: //Node.dll
8. 為了方便,將上述Node.dll,Node.lib,Node.h一起放在Node_lib資料夾下。將此資料夾放在將要使用Node.dll專案的目錄下。具體說來,假設此專案為dll_test,則放在dll_test專案的.cpp,.h檔案的目錄下。
9. 在開發環境中(這裡預設為visual studio 2010),為dll_test新增附加的外部依賴。具體方法是在“屬性”-〉“連結器”-〉“輸入”-〉“附加依賴項”中輸入“./Node_lib/Node.lib”,確定。
10. 建立測試方法,生成Node物件,呼叫相應函式即可。
相關文章
- 封裝C專案為dll封裝
- 使用C++/CLI呼叫C#封裝類庫C++C#封裝
- C++ 多個類的 DLL 封裝以及隱式連結和顯式連結 2 種方法呼叫C++封裝
- C++ Templates (2.2 使用Stack類别範本 Use of Class Template Stack )C++
- C/C++ Zlib庫封裝MyZip壓縮類C++封裝
- 封裝xunsearch類封裝
- JS 封裝類JS封裝
- C++之templateC++
- C++ 封裝互斥物件C++封裝物件
- 封裝Date工具類封裝
- JsonValue 封裝類JSON封裝
- 封裝Redis工具類封裝Redis
- c++ 模板模板引數("Template Template Parameters")C++
- 如何使用JQ封裝輪播圖封裝
- 何為封裝封裝
- 如何封裝一個自動歸、解檔類封裝
- [C++] template+struct 組合使用小技巧C++Struct
- jwt是什麼?php jwt類封裝和使用JWTPHP封裝
- c#封裝DBHelper類C#封裝
- 4、類和物件—封裝物件封裝
- 自用驗證類封裝封裝
- 封裝獲取Class類封裝
- php的curl封裝類PHP封裝
- 一、類的封裝性封裝
- vue 將echarts封裝為元件一鍵使用VueEcharts封裝元件
- 使用Delphi呼叫C++編寫的DLLC++
- C++ 使用 hiredis 封裝redis 的資料獲取介面C++Redis封裝
- 封裝JDBC—非框架開發必備的封裝類封裝JDBC框架
- 淺析 C++ 的封裝性C++封裝
- C++開發:template,模板C++
- 十五、類與封裝的概念封裝
- c# Lambda操作類封裝C#封裝
- Android Logcat 封裝類AndroidGC封裝
- http通訊類的封裝HTTP封裝
- 為什麼要使用封裝? - Vaibhav Singh封裝AI
- iOS-控制元件封裝為framework來使用iOS控制元件封裝Framework
- 小程式如何封裝提示元件並且使用封裝元件
- 設計模式--模板方法模式Template method(類行為型)設計模式