从外部类型库导入 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++ import
、importidl
和 importlib
属性。
怎么办?
【问题讨论】:
【参考方案1】:如果您愿意引入手动步骤,您可以在 oleview 中打开 tlb 并获取生成的 .idl 文件。 oleview.exe 位于 Windows SDK 的 bin 目录中,例如
C:\Program Files\Microsoft SDKs\Windows\v6.0A\bin\oleview.exe
【讨论】:
以上是关于从外部类型库导入 IDL 中的接口的主要内容,如果未能解决你的问题,请参考以下文章