注册表中已经有组件的CLSID、接口的IID 等信息,为什么COM还需要类型库??? 注册表中已经有组件的CLSID、接口的IID 等信息,为什么COM还需要类型库???类型库中同样也是有CLSID、接口的IID 等信息,为什么? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 类型库不单单包括CLSID和IID的声明(或/和定义),还包括接口方法的实现(转换)代码,注册表中是有CLSID、IID,但你都得在C++中声明、定义才能使用啊! 类型库干什么工作的你还没搞清楚!你在不同语言环境中导入你COM的类型库的时候编译器自动会产生一个如何该语言的一类型库副本,里面包括了说有接口ID和接口方法或属性的一些声明和接口方法中参数的自动转换!它的发布形式虽然是DLL,但是还有些不同之处就是多了一个类型库! 你可以这样理解,com就象一个类,客户程序要使用这个类必须提供.h和.cpp文件。不同于手工编写.h和.cpp的过程,com通过导入类型库来自动生成.h和.cpp文件。我的理解,大家讨论讨论,呵呵。 To:GnoDreamNa(only you)既然类型库已经提供了有关信息,为什么还要把CLSID等信息放进注册表,不是多余了吗? 一、VC编译器有这样一个特性,它可以读出COM类型库(.tlb文件),并提取其中声明的有关接口的类型库的详细资料,记住是“编译器”。二、程序在“运行期间”CoGetClassObject通过查注册表CLSID_Object,得知组件DLL的位置、文件名装入DLL库,使用函数GetProcAddress(...)得到DLL库中函数DllGetClassObject的函数指针。调用DllGetClassObject。它们的作用期间不同。 还有,如果你不用vc编写com的客户端,而是用vb来编写(其他的我不知道),那么你不需要自己引入tlb,而是直接利用clsid就可以创建com的客户端应用了。我相信,vb自己根据注册表里提供的clsid和其他信息自动引入了tlb。因此,clsid实际上为你提供了一个位置无关性的特点,使客户不需要知道com组件的位置,而只需要根据注册表的信息就可以使用该组件了。 [基础问题]:为什么这么做临界区不行呢? static_cast<>的作用???????????????? 关于dlelet [] 出错的问题 希望上海的朋友就地成立民间联盟起诉陈进 [急求]求数值方法中的拟牛顿法的C源程序 关于解压PNG中的IDAT Chunk的问题 [[[[[[[ 大家来说说OnOK()与OnClose()的根本区别 ]]]]]]] 请问什么叫做例程? 高手救命阿 有关dialogbar 非高手勿饶 binary文件转ascii 动态修改STATIC控件的风格,但是不成功,求助! 串口编程问题,知道的请进!
二、程序在“运行期间”CoGetClassObject通过查注册表CLSID_Object,得知组件DLL的位置、文件名装入DLL库,使用函数GetProcAddress(...)得到DLL库中函数DllGetClassObject的函数指针。调用DllGetClassObject。它们的作用期间不同。