C++類 使用template 如何封裝為DLL

tinystone發表於2010-10-13

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,則編譯會直接生成dlllib檔案,但是檔案本身會很大,兩個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物件,呼叫相應函式即可。

相關文章