从外部类型库导入 IDL 中的接口

Posted

技术标签:

【中文标题】从外部类型库导入 IDL 中的接口【英文标题】:Importing interfaces in IDL from an external type library 【发布时间】:2011-03-18 03:26:51 【问题描述】:

我有两个使用 ATL 和 Microsoft 的 IDL 编写的带有 COM 接口的类型库。我希望一个库中的接口继承自另一个库中的接口。

基本上,我想做 Steven 在How do I create interface methods using .tlb types in VS C++? 中描述的事情。唯一回答他的人似乎不明白这个问题。

这是我想做的,在代码中:


SomeLibrary DLL/TLB

ISomeInterface.idl

interface ISomeInterface : IDispatch  ... ;

SomeLibrary.idl

import "ISomeInterface.idl";

library SomeLibrary

    interface ISomeInterface;
;

SomeOtherLibrary DLL/TLB

ISomeOtherInterface.idl

// What do I put here so that the MIDL compiler knows
// what to do when it encounters the ISomeInterface type?

interface ISomeOtherInterface : ISomeInterface  ... ;

SomeOtherLibrary.idl

import "ISomeOtherInterface.idl";

library SomeOtherLibrary

    interface ISomeOtherInterface;
;

MIDL import 指令仅在导入 IDL 文件时有效,而我只有一个 DLL 和 TLB。我不能使用importlib,因为这只适用于library 定义。 MIDL 编译器不理解 Microsoft 的 C++ importimportidlimportlib 属性。

怎么办?

【问题讨论】:

【参考方案1】:

如果您愿意引入手动步骤,您可以在 oleview 中打开 tlb 并获取生成的 .idl 文件。 oleview.exe 位于 Windows SDK 的 bin 目录中,例如

  C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\oleview.exe

【讨论】:

以上是关于从外部类型库导入 IDL 中的接口的主要内容,如果未能解决你的问题,请参考以下文章

从 TLB 导入的接口上的进程外 COM 服务器的 QueryInterface

IDL 到类型库

将接口 IDL 文件转换为 C#

局部内部类

java 如何调用局部内部类和匿名类

Java基础语法09-面向对象下-内部类