对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);
