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新增附加的外部依賴。具體方法是在“屬性”
10.建立測試方法,生成Node物件,呼叫相應函式即可。