麻木的问题警报。
COM是一种DLL接口类型,还是DLL是一种COM接口类型?
如果我使用ctype从C++调用原生(而不是.net) Python,那是使用COM吗?
发布于 2011-12-13 00:47:15
是一种COM类型的动态链接库接口,还是一种类型的COM接口?
是也不是。本身COM本身与DLL导出无关,但它通常是通过inproc服务器的一个或多个DLL入口点实现的。
在这种情况下,注册表保存了一些记账信息,这样就可以找到DLL (不必将其命名为*.dll),并且只要通过实例化COM对象,就可以隐式调用DllGetClassObject入口点。因此,当您调用CoCreateInstance或CoCreateInstanceEx并提供CLSID/GUID时,幕后发生的事情是在注册表中查找已注册的COM类,以找出要使用的机制( DLL是其中之一),然后在使用DLL的情况下,将调用函数DllGetClassObject来创建您请求的实例。从理论上讲,您也可以手动完成所有这些工作。COM只是提供了一种很好的方式来隐藏血淋淋的细节,并为您提供了顶部的统一抽象层。
注意: Windows是适用于的DLL,但DLL通常与COM无关。DLL只提供了一种实现COM对象的方法--特别是针对COM InProc服务器。
在这样的COM DLL中通常有四个函数:
DllCanUnloadNowDllGetClassObjectDllRegisterServerDllUnregisterServer如果我使用ctype从
调用本机(而不是.net) Python,是不是使用了COM?
不是的。据我所知,Windows上的COM有单独的Python机制。参见here。
编辑: COM vs ActiveX
COM、ActiveX和OLE都是基本相同的基础机制的名称,只是焦点稍有不同(例如在ActiveX中)。
https://stackoverflow.com/questions/8477595
复制相似问题