程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> VC++ >> 在VC中導出C++類

在VC中導出C++類

編輯:VC++

  如何在VC中導出類,這是一個常有人問起的問題,下面我以一個簡單的例子來說明這個問題:

  首先使用Wizard創建一個Win32 Dynamic-Link Library工程,然後定義一個簡單的C++類CInDLL。由於該類會被工程之外的文件所引用,所以需要對這個類進行引出。因為只有引出後所生成的DLL中才帶有供足夠的信息以在連接和運行時被正確引入到進程空間中。有兩種方法可以引出類,使用__declspec(dllexport)定義和使用定義文件。

  下面先講使用__declspec(dllexport)的方法:將類定義改為:class __declspec(dllexport) CInDLL 就可以了。(譯者:你也許不相信會有這麼簡單,我也不相信。:-) 這樣產生的工程在編譯時是正確的但是在使用時會產生錯誤,因為你包含的頭文件中也是使用__declspec(dllexport),而使用這個DLL的工程中並沒有引出這個類,而是需要引入這個類)在使用時需要將類定義改為class __declspec(dllimport) CInDLL就可以了。

  使用定義文件可以有效的避免這個問題,這種方法是利用宏定義在不同的地方產生不同的編譯代碼:在頭文件中加入如下的代碼:

  #ifdef _CLASSINDLL     #define CLASSINDLL_CLASS_DECL     __declspec(dllexport)  #else     #define CLASSINDLL_CLASS_DECL     __declspec(dllimport)  #endif  #endif // ClassInDLL_H  //將class __declspec(dllexport) CInDLL改為  class CLASSINDLL_CLASS_DECL CInDLL  {   CInDLL();  ...  }
  
  在實現這個類的CPP文件的頂部加入#define _CLASSINDLL語句。
  #define _CLASSINDLL  CInDLL::CInDLL()  {  }  ...

  這樣一來在使用這個類時就可以不做任何改動了.

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved