急!!如何使用一个DLL中的类?

huangqishang 2003-08-14 04:00:56
大家好!我是刚接触DLL,因工作需要,请教大家一个很菜的问题。请各位朋友们指教!如何使用一个DLL中的类和资源?能否继承一个DLL中的类?继承之后可否支持虚拟函数?希望高手们能给小弟以解答!!最好能有这方面的例子,可以发到我邮箱。
huangqishang@163.com,我的qq是179987997。先谢谢大家!
...全文
164 16 打赏 收藏 转发到动态 举报
写回复
用AI写文章
16 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangqishang 2003-08-15
  • 打赏
  • 举报
回复
我在此再次感谢大家,真的感觉还是在这里求解问题比较方便,说真的,这个问题已经困扰我几天啦,现在大家的解答下终于给搞定,有种说不出的喜悦!!:)
huangqishang 2003-08-15
  • 打赏
  • 举报
回复
谢谢行远老兄两次为我解答,也感谢mfc168老兄!也感谢其它在这里为我解答的朋友们,这个问题到现在为止基本上解决了,呵呵。。。以后有不懂的地方还请大家多多帮忙,如果大家有不懂的,我也尽力帮助,不过我现在水平很菜哟。。。。。好了,现在我就给大家结贴!
bigdoors 2003-08-15
  • 打赏
  • 举报
回复
譬如:
#ifndef DLLEXPORT
#define DLLEXPORT __declspec(dllexport)
#endif

在DLL的类AA,则DLL项目中包含aa.cpp , aa.h
在aa.h中要在类名前加入__declspec(dllexport)描述
class DLLEXPORT AA
{
...
void A1();
void A2();
...
}

在aa.cpp中不做任何变化,和正常写cpp一样

项目编译生成后,除了aa.dll还有aa.lib这样的文件,
在需要引用dll的项目里,最简单的方法是在项目文件里加入aa.lib,在需要引用aa类的文件里直接包含aa.h就可以了,使用起来此项目里的其他类没区别。


mfc168 2003-08-15
  • 打赏
  • 举报
回复
如何使用DLL中的类?你可以导入该DLL,View菜单->ClassWizard->Message Map->Add Class按钮->From a type library....选择该DLL,就可以了

显示引用:

......
HMODULE hmod;
hmod=LoadLibrary("c:\\yourdll.dll");//假设其中有函数int connect(char *)
typedef int(*function1)(char *);//自定义

function1 MyFunc=(function1)GetProcAddress(hmod,"connect");//取得DLL中的connect函数地址
MyFunc("abc");//MyFunc就可以看作是connect 函数来使用
huangqishang 2003-08-15
  • 打赏
  • 举报
回复
大哥,我去msdn查了文档,确实有此方面的介绍,可是小弟在学校学习不太用功,所以 E 文太差,看得不 是太懂也。。哪位有此方面的小的示范程序,可否发给小弟???我很急呀。。。。。。
huangqishang 2003-08-14
  • 打赏
  • 举报
回复
谢谢行远老兄,我现在就去查msdn的文档!!
bigdoors 2003-08-14
  • 打赏
  • 举报
回复
〉〉继承一个DLL中的类?继承之后可否支持虚拟函数?
答案是肯定的

要使用__declspec(dllexport)关键字修饰需要导出的类
#ifndef DLLEXPORT
#define DLLEXPORT __declspec(dllexport)
#endif

class DLLEXPORT AA
{
...
void A1();
void A2();
...
}


在MSDN里搜索__declspec(dllexport),可以找到相关说明和例子

to Cline(营营):
你回答问题时总是喜欢说半截话,虽然是大实话,但对提问的人并没有实际帮助,既然披着星星,应该为论坛多做些贡献,细致的提问和细致的回答对大家都有帮助,不是吗?随便说说,勿怪。
huangqishang 2003-08-14
  • 打赏
  • 举报
回复
哪位朋友能否给一个简单的例子呀?小弟在此先谢谢大家啦。。。
Cline 2003-08-14
  • 打赏
  • 举报
回复
sure!

all MFC class are exported from MFC42.dll(MFC42d.dll)
huangqishang 2003-08-14
  • 打赏
  • 举报
回复
动态库的加载我知道了,但我说的意思是如何使用dll中的一个类,并且能否从dll中的类派生出新的类?
huangqishang 2003-08-14
  • 打赏
  • 举报
回复
谢谢cboy2wzhx和stonex_2000,我现在搞清了这隐式和显式调用的含义。我现在要做的是如何从一个dll中导出类为我的程序所使用,可否从dll中继承类?哪位朋友如果有这方面的源码,烦请发给我一份,小弟将不胜感激!!邮箱:huangqishang@163.com
stonex_2000 2003-08-14
  • 打赏
  • 举报
回复
动态调用:在VC6里好象没问题的,去看看吧。
http://expert.csdn.net/Expert/topic/2146/2146536.xml?temp=.9956629
stonex_2000 2003-08-14
  • 打赏
  • 举报
回复
隐式调用就是包含DLL的头文件,再将*.lib添加进Object/library modules就可以象一般的函数那么调用了。
huangqishang 2003-08-14
  • 打赏
  • 举报
回复
怎么没有朋友愿意帮我呀?我现在很急的,如果能解决,我马上给分!!!
huangqishang 2003-08-14
  • 打赏
  • 举报
回复
何为隐式调用?这位朋友能否给一段具体的示范代码呀?我被这个问题困了两天了,手头也没有现成的参考资料,这边老板催得很紧。哎。。。。。救 我 呀。。。。:)
cboy2wzhx 2003-08-14
  • 打赏
  • 举报
回复
如果是隐式调用,当然都很简单,include 这个头文件就可以了

15,471

社区成员

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

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