如何包含在另一个类型库(或 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 在不同的文件夹。
全部
我的环境: 使用 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 在不同的文件夹。