一、dll中類的匯出
在類名稱前增加 _declspec(dllexport)定義,例如:
class _declspec(dllexport) cmath;
通常使用預編譯開關切換類的匯入匯出定義,例如:
#ifdef dllclass_exports
#define ext_class _declspec(dllexport)//dll
#else
#define ext_class _declspec(dllimport)//使用者
#endif
class ext_class cmath;
二、使用dll中的類
1、匯入dll的lib
2、類的定義
3、使用類
例子**如下:
dll類原始碼
.h檔案
#ifndef _dll_class_
#define _dll_class_
//定義匯入,匯出巨集開關.
#ifdef dllclass_export
#define ext_class _declspec(dllexport)
#else
#define ext_class _declspec(dllimport)
#endif
class ext_class cmath
;#endif
.cpp檔案
#define dllclass_export
#include "dllclass.h"
#include #include bool callback dllmain(hinstance hinst,dword fdwreason,void* reserve)
break;
case dll_process_detach:
break;
case dll_thread_attach:
break;
case dll_thread_detach:
break;
} return 1;
}int cmath::add(int num1,int num2)
int cmath::sub(int num1,int num2)
我們看到上面的dll類中包含了dllmain(...)函式,這個函式為dll動態庫的程式入口。
入口程式不是dll必須的,常用於dll內部初始化或善後處理。
bool winapi dllmain(
hinstance hinstdll,//動態庫例項控制代碼
dword fdwreason,//初呼叫原因
lpvoid lpvreserved//保留值
);返回true,表示動態庫載入成功。
dllmain(.... ) 動態庫的載入或解除安裝時會被呼叫。例如:使用loadlibrary或freelibrary時會被呼叫。
fdwreason取值如下:
#define dll_process_attach 1 //程序載入
#define dll_thread_attach 2 //執行緒載入
#define dll_thread_detach 3 //執行緒解除安裝
#define dll_process_detach 0 //程序解除安裝
一般使用動態鏈結庫DLL中類的方法
現在假設你的建立的dll名是win32dll 1.新建乙個工程。將上述的三個檔案 win32dll.lib,win32dll.dll,win32dll.h,拷貝到當前工程目錄中。在工程的標頭檔案中,引入上述標頭檔案和lib庫。include win32dll.h pragma comment lib...
反射動態呼叫DLL類庫測試
定義 可以在執行時獲得.net中每乙個型別 包括類 結構 委託 介面和列舉等 的成員,包括方法 屬性 事件,以及建構函式等。還可以獲得每個成員的名稱 限定符和引數等。有了反射,即可對每乙個型別瞭如指掌。如果獲得了建構函式的資訊,即可直接建立物件,即使這個物件的型別在編譯時還不知道 同乙個功能不用反射...
怎麼在dll中新增類,和使用dll中的類
dll.h ifdef dll hiddevice class declspec dllexport chiddevice 匯出類 else class declspec dllimport chiddevice 匯入類po endif main.cpp include dll.h pragma c...