將自己寫的經常複用的類封裝成dll/lib的方法

來源:互聯網
上載者:User

如果你的工作長期與某個領域相關,比如說長期做直接體繪製(DVR)方面的開
發,那麼你可能經常使用自己的傳遞函數類,如果每一個工程你都把傳遞函數類的.h和.cpp檔案添加進去會比較麻煩,其實,我們可以像使用opengl的庫那樣來用你自己的類,做法就是把你寫好的類封裝成dll,具體做法如下: 

  第一步:製作dll

 

1.針對一個類Class A:

標頭檔 :classA.h
#ifdef __cplusplus
#define
EXPORT_CLASS
extern "C" __declspec (dllexport)
#else
#define
EXPORT_CLASS
__declspec (dllexport)
#endif

class EXPORT_CLASS classA

{

}

源檔案: classA.cpp

classA實現的代碼

輸出:classA.dll, classA.lib,

使用時:

#include "classA.h"   

同時在項目選項裡,把classA.h所在目錄添加到include 目錄,把classA.lib所在目錄添加到附加庫目錄, 把classA.dll拷貝到新程式目錄下,或者添加到系統路徑中.

2.針對兩個類Class A,Class B 互相調用:

標頭檔 :classA.h, classB.h

//如果只打包classA類

#ifndef EXPORT_CLASS_EXPORTS

#define EXPORT_CLASS __declspec(dllexport)

#else

#define EXPORT_CLASS __declspec(dllimport)

#endif

class EXPORT_CLASS classA

{

}

//需要打包classB類


#ifndef EXPORT_CLASS_EXPORTS
#define EXPORT_CLASS __declspec(dllexport)
#else
#define EXPORT_CLASS __declspec(dllimport)
#endif

class EXPORT_CLASS classB

{

}

源檔案: classA.cpp, classB.cpp

在classA.cpp引用了classB.

#include "classA.h"

#include "classB.h"

classA::classA()

{

classB B;

}

輸出仍是classA.dll, classA.lib,

此時如果只打包classA類, 編譯時間會發現找不到引用的classB類的成員變數和成員函數,因此也需要把classB封裝
輸出, 此時include的檔案要能能夠找到classB.h.

    第二步:如何使用這個dll

      當已經產生dll後,有兩種方法可以在其它程式中調用dll中的類和成員函數:


     
1)把

classA
.dll和

classA
.lib複製到調用程式的執行路徑下,注意不是debug路徑下。
      2)在project->setting->link裡添加

classA
.lib(或者用#pragma comment(lib, "

classA
.lib") )

     3)最後在主程式中就可以通過包含

classA
.h來使用

classA
類和它的成員函數。 



出處:http://hi.baidu.com/superql/blog/item/64d1555404660e5e574e0076.html

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.