從DLL中匯出類

2021-04-02 06:14:59 字數 1476 閱讀 8806

用def從dll匯出

乙個函式,或用__declspec(dllexport)指令從dll中匯出乙個類,想必大家已經很熟悉了,也經常使用著。這裡向大家介紹一種用def檔案從dll匯出乙個類的方法。具體原理或為什麼就不廢話了,學會匯出後,再慢慢回味吧。這裡主要敘述操作步驟。

1。開啟vc6.0,新建乙個"win32dynamic-linklibrary"工程,假設叫defclass,在「dllkind」選擇介面中選擇「a******dllproject」

2。新建乙個檔案,命名為defclass.def,先暫時輸入下面的內容,並加入工程。

librarydefclass

exports

3。向工程中加入乙個類cmath,並新增乙個add方法,使之看起來如下:

classcmath

;它的實現,你想如何由你決定,我做例子時,add返回returna+b;

4。開啟工程的設定(settings)介面,選擇link,勾選generatemapfile。

5。rebuildall工程。

6。在vc中開啟debug或release的*.map檔案(如果你工程名這defclass,那就是delclass.map)。

7。找到math.obj,比如:

0001:00000080??0cmath@@[email protected]

0001:000000c0??_ecmath@@[email protected]

0001:000000c0??_gcmath@@[email protected]

0001:00000130??1cmath@@[email protected]

0001:00000170?add@cmath@@[email protected]

8。把1,4,5行的第2列拷貝到defclass.def檔案中,使之成為下面的樣子(序號自己指定)

librarydefclass

exports

??0cmath@@qae@xz@1

??1cmath@@uae@xz    @2

?add@cmath@@qaehhh@z    @3

9。儲存所有檔案,再執行rebuildall.

如果一切正常,那你的dll中的類已經以序號匯出的了。這時再往cmath中加函式,如上從map檔案中找到函式的識別符號,並在def檔案中加一項,分配乙個序號給它。只要保持以前的匯出序號不變,用新編譯生成的dll替換先前的dll,以前的客戶程式仍然可以正常執行。

如何使用生成的dll?

你可以把"math.h"和"defclass.lib"拷貝到客戶程式的工程目錄下,把"defclass.dll"拷貝到客戶程式的輸出(debug/release)目錄下。 在客戶程式中#include"math.h",在客戶程式的settings中加入對defclass.lib引用。

cmathmath;

intnret=math.add(2,3);

從dll中匯出類

三 在客戶程式中使用dll 編譯乙個dll時將建立兩個檔案.dll檔案和.lib檔案。首先將這兩個檔案複製到客戶程式專案的資料夾裡,這裡需要注意dll和客戶程式的版本問題,盡量使用相同的版本,都使用release或者都是debug版本。接著就需要在客戶程式中設定lib檔案,開啟project set...

從DLL中匯出類

從dll中的匯出類,dll 如下 declspec dllexport stdcall class myclass 類 void stdcall myclass setvalue int a,int b 成員函式 int stdcall myclass add 成員函式 呼叫這個dll中,先要進行類...

C 從Dll中匯出類

從dll中匯出c 類的內容可以參照下面的文章,該文章基本內容寫得比較詳細,分析了使用dll匯出c 類的利弊,同時提出了較好使用dll中物件的模式,即建立對於dll端和客戶端都可見的純虛類,在dll中建立繼承於該純虛類的類,實現純虛類中的純虛函式,供dll外部的客戶端使用。針對需要單獨釋放物件資源的情...