请教:有关com组件是否需要idl文件的问题??(在线等待各位的帮助)

xklc 易传媒 开发组长/高级工程师/技术专家  2003-07-09 03:30:49
各位好:
我有一个com组件,是使用delphi写的。但我需要在VC环境下使用这个组件。根据我所查得的资料,在VC下使用这个组件,是需要delphi所生成的IDL文件来生成对应的.H和.C文件的。但我目前没有这个文件,请问在VC环境下使用时,我是否需要这个idl文件,如果不需要,我在在VC下使用这个com组件,该如何使用
菜鸟一个,请多多关照。
...全文
41 点赞 收藏 14
写回复
14 条回复
xklc 2003年07月11日
结帐了
回复 点赞
xklc 2003年07月11日
问题已经解决,谢谢上面各位的帮助.
回复 点赞
xklc 2003年07月10日
to lcp(dupi):
谢谢你的回答。根据我刚才所查看的资料,其实idl文件就是oleview中可以看到的部分。
根据这个,我已经生成了对应的idl文件。再根据这个文件,我生成了对应的.h和.c文件,现在除了调用函数有问题之外,其他问题都已经解决了
回复 点赞
lcp 2003年07月10日
第3步应该是说:
你需要知道这个com的class ID 和 interface ID -- 128位的整数;
然后把这两个数定义成易于理解的IID_YouIID和CLSID_YouClass常数,方便程序中使用。

最好是能够得到这个dll的接口定义文件,这样你能知道如何调用这个COM;
如果没有,就用VC的工具oleview来查看com的接口吧。
回复 点赞
xklc 2003年07月09日
多谢ldsjlzy(小李) 的回答,第三步能不能说清楚些。
回复 点赞
ldsjlzy 2003年07月09日
1.Regsvr32.exe 注册你的*.dll
2.用oleview查出注册的com的类和接口的GUID: CLSID_YouClass和IID_YouIID的GUID.
3.用const IID IID_YouIID = {............com对象GUID..........}
和 const CLSID CLSID_YouClass = {...............接口GUID........}
4.hr = CoCreateInstance(.......)
hr成功后就可使用了。
回复 点赞
xklc 2003年07月09日
各位,问题还没有得到解决。
回复 点赞
xklc 2003年07月09日
to DoubleJiang(Double):
您好,我程序中本身并没有ACTIVEX控件。我是调用别人已经用DELPHI写好的COM控件,对方只给了我一个com编写的.dll文件。所以么 :(
回复 点赞
DoubleJiang 2003年07月09日
如果你在VC中调用 ActvieX,应该已经生成了相应的 class, 你直接用class就好了呀?
回复 点赞
xklc 2003年07月09日
to lcp(dupi):
你好!多谢您的解答,但是我没有函数的原型,在VC环境下调用ACTIVEX控件,需要对应的函数原型,请问怎么解决
回复 点赞
DoubleJiang 2003年07月09日
com 和语言无关是因为使用了 idl 文件,如果你没有你怎么知道com提供了什么样的接口呢
回复 点赞
xklc 2003年07月09日
如果我直接引入这个空间,对应的IID之类的东西是否需要自己去注册表里面查
回复 点赞
lcp 2003年07月09日
com组件是语言无关的,不需要idl文件重新编译。
在vc下使用用delphi制作的com,需要:
1 注册该组件;
2 知道该组件的uuid;
3 就可以用CoCreateInstance()等函数来创建一个该组件的实例。
回复 点赞
budzhang 2003年07月09日

印象:
很久没有看com了,vc里好像用#import指令直接可以引入com组件。

回复 点赞
发动态
发帖子
ATL
创建于2007-09-28

3025

社区成员

4.8w+

社区内容

ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区公告
暂无公告