C 的dll匯出類

2021-07-03 06:43:32 字數 1760 閱讀 7819

首先建乙個dll

專案

然後做乙個公用的標頭檔案

【export.h

#ifndef _export_h_

#define _export_h_

struct icalculator

;#endif

這個標頭檔案封轉乙個基類

然後再dll模組中做乙個子類,繼承於這個基類

【calculator.h】

#ifndef _calculator_h_

#define _calculator_h_

#define dll_exports

#ifdef dll_exports

#define dll_api __declspec(dllexport)

#else

#define dll_api __declspec(dllimport)

#endif

#include "export.h"

class ccalculator:public icalculator

;#endif

【calculator.cpp】

#include "stdafx.h"

#include "calculator.h"

//全域性變數

static ccalculator g_calculator;

ccalculator::ccalculator()

ccalculator::~ccalculator()

int ccalculator::add(int dwnum1,int dwnum2)

int ccalculator::sub(int dwnum1,int dwnum2)

extern "c" dll_api void* createcalculatorobj()

好了,生成一下,dll做好了

建乙個呼叫dll的專案,記得把剛剛生成的dll放在這個專案的目錄下,剛剛那個export.h也要記得包進來

然後【main.cpp】

C 從Dll中匯出類

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

DLL 匯出類的問題

使用dll的乙個比較嚴重的問題就是編譯器之間的相容性問題。不同的編譯器對c 函式在二進位制級別的實現方式是不同的。所以對基於c 的dll,如果編譯器 不同就有很麻煩的。如果建立的是mfc擴充套件dll,就不會存在問題,因為它只能被動態連線到mfc的客戶應用程式。這裡不是本文討論的重點。一 重新編譯問...

dll匯出類的實現

首先是在dll中實現類得宣告 新增inc.h標頭檔案 cpp view plain copy class declspec dllexport cpreson 在dllmain.cpp中或自定義個個inc.cpp檔案實現類 cpp view plain copy cpreson cpreson cp...