我有两个带有COM接口的类型库,我使用ATL和Microsoft的IDL编写。我希望一个库中的接口继承另一个接口中的接口。
基本上,我想做的事情与史蒂文在How do I create interface methods using .tlb types in VS C++?所描述的相同。唯一回答他的人似乎并不理解这个问题。
以下是我想要做的事情,代码:
interface ISomeInterface : IDispatch { ... };
import "ISomeInterface.idl";
library SomeLibrary
{
interface ISomeInterface;
};
// What do I put here so that the MIDL compiler knows
// what to do when it encounters the ISomeInterface type?
interface ISomeOtherInterface : ISomeInterface { ... };
import "ISomeOtherInterface.idl";
library SomeOtherLibrary
{
interface ISomeOtherInterface;
};
MIDL import
指令仅在导入IDL文件时有效,我只有DLL和TLB。我无法使用importlib
,因为它仅适用于library
定义。 MIDL编译器不了解Microsoft的C ++ import
,importidl
和importlib
属性。
怎么办?
答案 0 :(得分:2)
如果您愿意介绍手动步骤,可以在oleview中打开tlb并以此方式获取生成的.idl文件。 oleview.exe位于Windows SDK的bin目录中,例如
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\oleview.exe