COM和动态库的区别:

实现上的区别:

COM组件是经过特殊处理的动态库,这里的特殊处理是需要实现几个标准接口,之所以要实现这些接口是因为操作系统的COM组件管理器需要调用这些接口来把COM组件注册到自己的管理列表中。

动态库不需要实现任何标准接口,他只需要对外提供自己的头文件即可。

 

使用上的区别:

动态库的加载需要在工程构建时就指定导入库,并将dll二进制文件放到相应的目录下以供exe调用。或者通过LoadLibrary的方式动态加载,但是依旧需要指定导入库。

COM组件不需要再工程构建时指定,也不需要动态加载,只需要在想使用的使用调用操作系统提供的接口去获取,然后再通过相应的接口查询自己想要的函数对象即可。相当于COM组件是由操作系统加载到内核内存区,仿佛变成了系统调用。