1

我已经看到 Microsoft COM 和 XPCOM,至少从我到目前为止所阅读和收集的内容来看,组件中接口的实现基本上必须在派生所有虚拟接口的单个​​类中。它是否正确?我错过了什么?

有没有办法让多个对象(可能在单独的 DLL 中)每个都提供它们的功能,并且仍然能够使用 QueryIterface 在它们之间自由转换?

我正在寻找的是具有一些功能的组件,但仍然允许外部客户端代码使用(可能)新接口创建组件的新扩展。理想情况下,这应该在不泄露组件的当前来源及其实现的情况下发生。

4

2 回答 2

1

这应该是可能的,尽管标准的高级包装器可能不支持。大多数包装器(ATL、MFC 等)仅支持将 COM 对象映射到单个类。但是,QueryInterface 可以返回不同的指针并调用 COM 对象代码,因此第一个 COM 对象可以加载不同的 DLL,实例化不同的对象,并返回指向其接口 (vtable) 的指针。

据我所知,这一切都是可能的,您可能会自己编写很多低级胶水代码。

于 2008-10-25T00:38:52.567 回答
0

是的,ATL 支持分离接口 这允许在另一个类中实现接口,该类仅在请求接口时才实例化。由于它只传递一个接口,我想它也可以放入一个单独的 DLL 中。

(也可以被请求一次后缓存)

于 2008-10-26T20:47:18.763 回答