我有一个没有类型库的 32 位 ATL COM 组件。它为一个给定的类提供了一个类工厂,该类实现了多个接口。
当我将它用作进程内服务器时,一切正常 - 客户端调用 CoCreateInstance(),实例化对象,并且 QueryInterface() 检索指向所请求接口的指针。但是,当我将组件放入 COM+ 中时,我无法再实例化该类 - CoCreateInstance() 现在返回 E_NOINTERFACE。
我认为问题在于 COM+ 由于缺少类型库而无法执行封送处理 - 它不知道如何执行此操作。我是否需要生成并注册类型库来解决此问题,还是有其他方法?
类型库是支持编组的一种方式,代理/存根 DLL(从 IDL 生成)是另一种方式。然而,在这两种情况下,您首先都需要 IDL。
如果 Microsoft 没有为此接口提供 typelib/proxy DLL 或 IDL,那么很可能是有原因的:也许该接口使用不可编组的数据结构,需要将函数指针作为方法参数传递或类似的东西?如果是这种情况,就没有办法让这个接口适用于 DCOM。
也许您可以重建 IDL,但很可能这是不可行的。那么您的最后一个后备方案可能是使用自定义或处理程序编组,但这可能不值得付出努力。也就是说,我建议考虑其他不涉及使用并非设计用于 DCOM 的 DCOM 接口的路线。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)