dll导出类如何动态加载?

baoqingfeng 2004-08-16 05:23:33
我的导出类是CCommunity;在我使用的时候。pFunction=(CCommunity*)::GetProcAddress(hDLL,"CCommunity");
获得的pFunction总是为0x000000,为何呢?不能这么用吗?那用设么方法?

HINSTANCE hDLL;
//进程中的每个DLL由唯一的32位字节HINSTANCE值进行标志。
CCommunity* pFunction;
hDLL=::LoadLibrary("..\\lib\\Erric_T20_Commu.dll");//加载动态链接库dll文件;
if(hDLL)
AfxMessageBox("MyDll.dll已经成功加载!");
else
{
AfxMessageBox("没有找到MyDll.dll,请先编译好dll.");
return E_ERROR;
}
pFunction=(CCommunity*)::GetProcAddress(hDLL,"CCommunity");
CString test = "";
pFunction->DisConnect();
::FreeLibrary(hDLL);//卸载dll文件;
return E_SUCCESS;
...全文
442 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
msdn_user 2004-08-17
  • 打赏
  • 举报
回复
导出类的dll不能被动态加载
其实类只是数据和代码的一个封装
如果你一定要动态加载的话
得到的就是数据和一个个的函数
这样的话类的概念就不存在了
baoqingfeng 2004-08-17
  • 打赏
  • 举报
回复
com在用之前还要注册,不方便
baoqingfeng 2004-08-17
  • 打赏
  • 举报
回复
CCommunity就是我要导出的类。
class AFX_EXT_CLASS CCommunity
{
}
oyljerry 2004-08-16
  • 打赏
  • 举报
回复
要么直接在dll中导出类
flyelf 2004-08-16
  • 打赏
  • 举报
回复
类在dll中不能被动态载入,建议使用com
yturieo 2004-08-16
  • 打赏
  • 举报
回复
可能那个DLL里没有 CCommunity 这个可导出的函数

15,471

社区成员

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

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