首先建乙個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...