怎么通俗的解释COM组件?
作者:知乎用户 链接:https://www.zhihu.com/question/49433640/answer/116028598 来源:知乎 著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。 GUID:全局唯一标识符,可以看成是唯一的一个ID,类似于物理网址那样。IID:也就是接口的唯一ID。C++中本没有接口的概念,是COM强行引入的,也就是一个类中全部都是纯虚函数,这样的类称为接口(interface),微软甚至定义了一个宏,大概就是这样:#define interface struct;IUnknown接口:这个解释起来会比较麻烦。如 @灵剑 所说,当自己写的一个dll升级的时候,内部可能增加了成员,导致分配的空间发生变化,从而使得次dll和以前的dll不能兼容。这个就是臭名昭著的dll hell,为此微软最开始想了个很挫的方法,那就是在dll后面加上自己的版本号,如:myDll_1.dll, myDll_2.dll……如果你打开system32目录看看就知道是怎么回事了。但是这样总不是一个办法,假如有个实现类MyClass,我这样操作:MyClass* ptr = new MyClass(); MyClass可能在不同dll版本中占的空间不同产生兼容问题,我拿一个指向MyClass的指针调用方法也会产新问题,那么,如果是指向一个接口(只含有纯虚方法