【发布时间】:2017-11-17 01:03:53
【问题描述】:
全部
我的环境: 使用 VS C++ 2005,带 ATL
我有一个项目,我想在其中创建和构建 2 个单独的 COM 服务器 Dll,我需要在项目 B 中引用项目 A 中定义的 COM 对象的接口。 注意:我需要能够在 IDL 级别做到这一点,然后编译器将生成正确的头文件等,我的类型库将是正确的。
这是一个例子:
项目A:
服务器对象 -> IServer
项目 B
Client Object -> IClient,它有一个 GetServer() 方法,返回 Project A 中定义的 IServer
项目 A 是单独的 COM Dll,首先构建。 项目 B 是单独的 COM Dll 并引用项目 A 中定义的接口。
是的,我知道,我可以让 IClient.GetServer() 以 IUnknown 形式返回对服务器对象的引用,然后让开发人员将其显式转换为服务器接口,但这很烦人且容易出错。
【问题讨论】:
-
你的问题是什么?
-
项目 B 的 TypeLibrary 需要对项目 A 的 TypeLibrary 有一个引用(
importlib指令),然后才能使用项目 A 中声明的接口。 -
问题在主题中并在第一段中讨论。好的,我想我只需要 importlib,在我为项目 A 注册类型库之后......我会试一试。