COM组件程序中的引出函数是如何被调用的

时间:2021-11-20 14:03:01

今天看了COM编程的书,看到一个地方:客户程序通过调用COM组件程序中的引出函数createobject来创建组件对象。
至此,实在搞不懂一个问题:组件对象还没有创建,如何能调用它的引出函数呢?照理说,COM组件程序中的引出函数createobject也是对象的成员,应该在COM组件对象创建之后才在内存中出现,此后才能调用它。可他这里怎么不遵守这个规则了呢?非常希望大家的热心指点,谢谢!

6 个解决方案

#1


COM组件包括进程内组件和进程外组件。
进程内组件一般是Dll,进程外组件一般式exe
而DLL的导出函数,是不需要对象来调用的,是在LoadLibrary函数加载了动态库后,使用GetProcAddress函数来获得的导出函数地址。
不知道这样说是否解释了你的疑虑。

#2


书上说的应该是类厂对象的createobject方法,组件对象是没有创建,但是类厂对象应该已经创建了。CoCreateInstance首先就是要得到类厂,然后调用类厂的CreateObject方法来创建组件。类厂也是组件的规则。

#3


先通过CoGetClassObject创建类厂组件,然后通过类厂CreateInstance创建组件对象,同上,类厂也是一个COM对象

#4



学习,帮顶。

#5


楼主可以看一下 <<COM原理与应用>>.里面讲的很清楚

#6


非常感谢楼上几位,我再消化一下大家所说的,然后再回来.

#1


COM组件包括进程内组件和进程外组件。
进程内组件一般是Dll,进程外组件一般式exe
而DLL的导出函数,是不需要对象来调用的,是在LoadLibrary函数加载了动态库后,使用GetProcAddress函数来获得的导出函数地址。
不知道这样说是否解释了你的疑虑。

#2


书上说的应该是类厂对象的createobject方法,组件对象是没有创建,但是类厂对象应该已经创建了。CoCreateInstance首先就是要得到类厂,然后调用类厂的CreateObject方法来创建组件。类厂也是组件的规则。

#3


先通过CoGetClassObject创建类厂组件,然后通过类厂CreateInstance创建组件对象,同上,类厂也是一个COM对象

#4



学习,帮顶。

#5


楼主可以看一下 <<COM原理与应用>>.里面讲的很清楚

#6


非常感谢楼上几位,我再消化一下大家所说的,然后再回来.