客户程序中显式加载dll时,如何使用dll中导出的类

mengxiang2003 2005-04-10 08:00:21
客户程序中显式加载dll时,如何使用dll中导出的类。
隐士加载时由于客户端程序可以利用dll的头文件,所以可以直接用类声明一个对象,然后再调用类中的方法。可是动态加载时没有头文件阿,怎么使用dll提供的类呢
...全文
233 10 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
mfmmfc 2005-04-13
  • 打赏
  • 举报
回复
tetian(tetian) 写得不错,
蹭分!
axiaowin 2005-04-12
  • 打赏
  • 举报
回复
需要包含头文件,
tetian 2005-04-11
  • 打赏
  • 举报
回复
写一个.def文件,里面装上这样一个涵数的symbol:CreateFaxPbUtlInstance

void WINAPI CreateFaxPbUtlInstance(LPCTSTR lpszClsName, void **pClass)
{
CString strName = lpszClsName;
//if(strName.CompareNoCase("CDispItemDlg") == 0)
if(strName.CompareNoCase("CFaxPbUtlApp") == 0)
{
AfxOleInit();
//CDispItemDlg *pCls = new CDispItemDlg;
CFaxPbUtlApp *pCls = new CFaxPbUtlApp() ;
*pClass = pCls;
}

}
在调用这个dll涵数的摸块中:

typedef void(WINAPI *PCrtInstance)(LPCTSTR, void **);
PCrtInstance pCrtInstance;

HMODULE hMod = LoadLibrary(TEXT("FaxPbUtlTest.dll"));
if (hMod == NULL)
{
return;
}
pCrtInstance = (PCrtInstance)GetProcAddress(hMod, TEXT("CreateFaxPbUtlInstance"));
if (NULL == pCrtInstance)
{
return;
}

void *pCls ;
//CActReport AR ;
pCrtInstance("CFaxPbUtlApp", &pCls);
CFaxPbUtlApp* pDspDlg = (CFaxPbUtlApp*)pCls;

就可以了.
oyljerry 2005-04-10
  • 打赏
  • 举报
回复
显示加载也需要头文件的
masterz 2005-04-10
  • 打赏
  • 举报
回复
http://www.codeguru.com/Cpp/W-P/dll/importexportissues/article.php/c123/
Explicitly Linking to Classes in DLL's
flyelf 2005-04-10
  • 打赏
  • 举报
回复
也可以采用头文件,只不过该头文件中的类是一个纯抽象类

15,473

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧