如何包含在另一个类型库(或 COM 服务器 DLL)中定义的 COM 接口

How to include a COM Interface that is defined in another type library (or COM server DLL)

全部

我的环境: 使用 VS C++ 2005,ATL

我有一个项目,我想在其中创建和构建 2 个单独的 COM 服务器 Dll,我需要在项目 B 中引用项目 A 中定义的 COM object 的接口。 注意:我需要能够在 IDL 级别执行此操作,然后编译器将生成正确的 headers,等等,我的类型库将是正确的。

这是一个例子:

项目 A:

服务器Object -> IServer

项目 B

Client Object -> IClient 有一个 GetServer() 方法,returns IServer 在项目 A

中定义

项目 A 是单独的 COM Dll,首先构建。 项目 B 是单独的 COM Dll 并引用项目 A 中定义的接口。

是的,我知道,我可以将 IClient.GetServer() return 对服务器 object 的引用作为 IUnknown,然后让开发人员将其显式转换为服务器接口,但那是烦人且容易出错。

按照建议,使用 importlib,但就我而言,我需要在我的 idl 中使用 import。 此外,MIDL 将在你的 header 中生成 #include 到另一个项目中包含的 header 文件,你需要在你的项目属性中添加 include 目录引用,因为 header 在不同的文件夹。