我一直在阅读COM,提到二进制标准以及如何使语言独立成为可能。 实际上是什么二进制标准? 在我看来,二进制文件意味着机器级代码,如果它意味着机器语言,它怎么能独立呢?
答案 0 :(得分:3)
在最低级别,COM实际上只是一个描述两个软件如何通信的二进制级标准。它是二进制文件,因为它的 100%语言独立,它不依赖于源代码,而只依赖于内存中特定的结构布局。
在我看来,最好的文章是The COM Programmer's Cookbook。这个着名的二进制标准在我引用的文档开头解释:
服务用户和实现之间的分离是通过 间接函数调用。 COM接口只不过是一个命名 函数指针表(方法),每个都有记录 行为。根据界面记录行为 函数的参数和对象内状态的模型 实例。实例中的模型描述将为no 超过了使其他方法的行为所需要的 界面可以理解。 功能表称为a 虚表强>
接口实际上是指向vtable的指针。 vtable是 通常由多个实例共享,因此方法需要不同 指针,以便能够找到接口所连接的对象 至。这是接口指针,vtable指针是唯一的 接口的客户端可以访问的东西。 按 设计,这种安排与虚拟方法调用约定相匹配 C ++类,因此COM接口与C ++二进制兼容 抽象类。
它附带的模式代表内存中的二进制标准布局: