从DLL导入的类如何使用

我从一个DLL文件导入了两个类,一个没有什么方法,另一个有很多方法,用带很多方法的类创建,但是创建的时候指针始终是空例如两个类C_CLASSDLL只有几个基本方法CCLA... 我从一个DLL文件导入了两个类,一个没有什么方法,另一个有很多方法,用带很多方法的类创建,但是创建的时候指针始终是空
例如两个类
C_CLASSDLL 只有几个基本方法
CCLASSDLL 具有很多方法

使用的时候
CCLASSDLL cd;
cd.DoSomeThing()

总是返回空
感谢

可能是我描述的不够准确,但后来解决了,方法描述如下
DLL是别的公司做好的,用它来控制硬件。但该公司没有提供demo,没有提供 .h 和 .lib,因此才会如此麻烦
如果该DLL使用显示链接进行编译,也好办,动态加载DLL,用工具查看其函数然后GetProcAddress可以使用了
但如果该DLL使用隐式链接进行编译,即使知道函数名也无法用GetProcAddress返回地址

将该DLL添加到 工程后,生成两个类,如前描述
只有几个 基本方法的类 到底可以干什么,我没时间弄懂了,以后再说吧
具有很多方法的类 显然是要使用的类 因为控制硬件的方法(函数)都在这个类里面

由于使用自动化技术(ATL or COM)因此 语句
CCLASSDLL cd; 创建对象后 还要调用CreateDispatch() 真正的实例化 但这个函数需要一个CLSID
这个CLSID就是使用 regsvr32 "...\...\xxx.DLL"命令向系统注册的时候产生的一个128位的数值,而且该数值是动态生成的,不同时间不同机器注册DLL时该数值均不同
因此需要另外一种方法获取这个CLSID也就是 CLSIDFromProgID()函数了
这个函数使用DLL的类型名(不知“类型名”这个叫法是否准确)作为参数,向系统注册表查询该CLSID,而DLL的类型名必定是不变的
展开
 我来答
silvergingko
2010-04-01 · TA获得超过5945个赞
知道小有建树答主
回答量:688
采纳率:0%
帮助的人:871万
展开全部
有点看不懂楼主的描述,“用带很多方法的类创建”,创建什么呢?创建类的实例是吗?“创建的时候指针始终是空”,什么指针是空?楼主给的示例代码没出现指针。

总是返回空,是指DoSomeThing函数返回空?DoSomeThing的函数签名是怎样的呢?

楼主的DLL是怎么建的呢?
DLL有好多,可以导出类的有WIN32 DLL和MFC扩展DLL工程类型。例如MFC规则DLL工程类型则不允许导出类。

总之,楼主“无法实例化类”(从我对楼主描述的猜测只能是这样了)多半代码有问题。

楼主可以先别做成DLL,先把该类单独做成一个.cpp,然后在正常的程序中先使用该类,如果使用没问题,然后再新建DLL工程,把该类的代码全部黏贴过去。这样可能对于新手来讲,容易排错。
百度网友db219ac77
2010-04-05
知道答主
回答量:3
采纳率:0%
帮助的人:0
展开全部
楼上说的很好,dll有很多种类的,用的不同,把类放在里面不怎么明智
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式