如何调用Dll中类的成员?

绿色环保-菜青虫 2003-06-20 05:01:51
各位前辈:

VC中如何动态调用Dll中类的成员?普通函数可以这样:
////////////////////////////////////////////////
HINSTANCE hDll = NULL;
hDll = ::LoadLibrary("My.dll");
if(hDll == NULL)
{
AfxMessageBox("Load library failed!");
return;
}
int (*pFun)(char *pIDNo);
pFun = (int (*)(char *pIDNo)::GetProcAddress(hDll, "Test");
if(pFun == NULL)
{
::FreeLibrary(hDll);
AfxMessageBox("Load function failed!");
return;
}

int rev = pFun("IDNo");
CString str;
str.Format("Return : %d",rev);
MessageBox(str);
::FreeLibrary(hDll);
///////////////////////////////////////////////////////////

但类呢?
...全文
33 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
Phourm 2003-06-20
  • 打赏
  • 举报
回复
你可以用定义interface的方式完成,其它是虚表在作用
.h
interface IYourintefrace
{
virtual void Init()=0;
virtual BOOL Functions(LPVOID lpParam)=0;
....
}
然后你的DLL的类从IYouinterface里继承
class CYourClass : public IYourinterface
{
public:
//IYourinterface must implement
virtual void Init();
virtual BOOL Functions(LPVOID lpParam);
.....
};

用一个export函数建立这个类的实例
extern "C" IYourinterface PASCAL EXPORT Create(...)
{
return new CYourClass(...);
}
这样你用IYourinterface就象用一你的CYourclass一样,不过没有数据成员,只有virtual函数
你要的数据全部用函数来完成
o_racle 2003-06-20
  • 打赏
  • 举报
回复
Explicitly Linking to Classes in DLL's :
http://www.codeguru.com/dll/expclass.shtml

15,471

社区成员

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

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