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

mengxiang2003 2005-04-10 08:00:21
客户程序中显式加载dll时,如何使用dll中导出的类。
隐士加载时由于客户端程序可以利用dll的头文件,所以可以直接用类声明一个对象,然后再调用类中的方法。可是动态加载时没有头文件阿,怎么使用dll提供的类呢
...全文
204 10 打赏 收藏 举报
写回复
10 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
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
也可以采用头文件,只不过该头文件中的类是一个纯抽象类
  • 打赏
  • 举报
回复
相关推荐
发帖
进程/线程/DLL

1.5w+

社区成员

VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
帖子事件
创建了帖子
2005-04-10 08:00
社区公告
暂无公告