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

时间:2010-07-19 21:18:44

标签: atl idl midl typelib

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

基本上,我想做的事情与史蒂文在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 个答案:

答案 0 :(得分:2)

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

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