对dll里提供的接口调用很简单。1)加载dll库 2)取dll中某函数的指针 3)用此指针调用dll里的函数完成相应功能 4)卸载dll库
知道的同学们可以一瞥而过。怎样是这个面向过程的东西搞得更面向对象一点呢?
1.构造和析构函数中完成1)和4)的操作。
CLibDownload::CLibDownload(void): m_bTimerDown(false) ,m_nTryTimes(1) { hDll = LoadLibrary(_T("mfcDll.dll")); } CLibDownload::~CLibDownload(void) { m_bTimerDown = false; m_nTryTimes = 0; FreeLib(); } void CLibDownload::FreeLib() { if (hDll!=NULL) { FreeLibrary(hDll); hDll=NULL; } }
3.类中定义函数指针。
class CLibDownload { public: CLibDownload(void); virtual ~CLibDownload(void); ... protected: HINSTANCE hDll; public: typedef void (WINAPI *FunDownload)(CStringA,int,CStringA,bool); ... }
4.这样使用。
View Code
1 FunDownload fun = (FunDownload)GetProcAddress(hDll,"downloadResume");
2 fun((CStringA)strUrl,threadCount,(CStringA)strPkg,false);