首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >COM和windows DLL之间有什么关系?

COM和windows DLL之间有什么关系?
EN

Stack Overflow用户
提问于 2011-12-13 00:38:45
回答 1查看 397关注 0票数 4

麻木的问题警报。

COM是一种DLL接口类型,还是DLL是一种COM接口类型?

如果我使用ctype从C++调用原生(而不是.net) Python,那是使用COM吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-13 00:47:15

是一种COM类型的动态链接库接口,还是一种类型的COM接口?

是也不是。本身COM本身与DLL导出无关,但它通常是通过inproc服务器的一个或多个DLL入口点实现的。

在这种情况下,注册表保存了一些记账信息,这样就可以找到DLL (不必将其命名为*.dll),并且只要通过实例化COM对象,就可以隐式调用DllGetClassObject入口点。因此,当您调用CoCreateInstanceCoCreateInstanceEx并提供CLSID/GUID时,幕后发生的事情是在注册表中查找已注册的COM类,以找出要使用的机制( DLL是其中之一),然后在使用DLL的情况下,将调用函数DllGetClassObject来创建您请求的实例。从理论上讲,您也可以手动完成所有这些工作。COM只是提供了一种很好的方式来隐藏血淋淋的细节,并为您提供了顶部的统一抽象层。

注意: Windows是适用于的DLL,但DLL通常与COM无关。DLL只提供了一种实现COM对象的方法--特别是针对COM InProc服务器。

在这样的COM DLL中通常有四个函数:

  • DllCanUnloadNow
  • DllGetClassObject
  • DllRegisterServer
  • DllUnregisterServer

如果我使用ctype从

调用本机(而不是.net) Python,是不是使用了COM?

不是的。据我所知,Windows上的COM有单独的Python机制。参见here

编辑: COM vs ActiveX

COM、ActiveX和OLE都是基本相同的基础机制的名称,只是焦点稍有不同(例如在ActiveX中)。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8477595

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档