【发布时间】:2010-10-25 13:09:03
【问题描述】:
我有一个没有类型库的 32 位 ATL COM 组件。它为一个给定的类提供了一个类工厂,该类实现了多个接口。
当我将它用作进程内服务器时,一切正常 - 客户端调用 CoCreateInstance(),对象被实例化,QueryInterface() 检索指向所请求接口的指针。但是当我将组件放入 COM+ 时,我无法再实例化该类 - CoCreateInstance() 现在返回 E_NOINTERFACE。
我认为问题在于 COM+ 无法执行封送处理,因为没有类型库 - 它不知道该怎么做。我需要生成并注册一个类型库来解决这个问题还是有其他方法?
【问题讨论】:
-
ATL 项目向导通常设置有一个类型库,作为资源嵌入到项目输出中并注册到 coclass。
-
是的,我知道。问题是我实现了一个微软已经定义的接口,没有提供 idl 文件或类型库。这就是为什么我很难重新发明充满自定义类型的类型库。
-
fyi,它在 COM 的上下文中是“编组”,在 Java 的上下文中是“编组”。 :-)
标签: windows com interop marshalling atl