ATL“实现界面向导”

Posted

技术标签:

【中文标题】ATL“实现界面向导”【英文标题】:ATL "Implement interface wizard" 【发布时间】:2011-03-02 03:53:26 【问题描述】:

我在 VC++ 2005 中创建了 ATL COM-server。我想实现在某个库 (*.olb) 中定义的一些接口。我知道如果我#import 这个olb(在.tlh.tli 中)我会看到界面。但是我无法使用“实现接口向导”为接口创建存根实现,因为“接口”列表中不存在该接口(“注册表”和“文件”选项)。为什么会出现这种情况?以及如何自动生成存根实现。提前致谢。

【问题讨论】:

【参考方案1】:

您可以编辑 .idl 文件并使用

[
    ...
]
library Something

    importlib("somelibrary.olb"); 
    ... 

然而,这很尴尬,importlib 语句必须出现在 library 块内。这是必要的,因为类型库可能包含 coclass 定义。

您真正想要的是使用 import 语句来导入创建类型库的 IDL。减去 coclasses。如果您没有 IDL,您可以使用 OleView.exe、File + View Typelib 重新创建它。将所需的接口定义复制并粘贴到您自己的 .idl 文件中,然后在您的 IDL 中使用 import MIDL 语句。

【讨论】:

我在项目中发现了一个错误。图书馆一团糟。无论如何,谢谢你的oleview方式。我真的很喜欢。【参考方案2】:

我在项目中发现了一个错误。图书馆一团糟。

【讨论】:

以上是关于ATL“实现界面向导”的主要内容,如果未能解决你的问题,请参考以下文章

厦门atl在哪里

将实现 ATL 接口的 VBA 类传递给 ATL 方法

错误 C2664:无法将参数 2 从 'const ATL::CAdapt<ATL::CComPtr<IZipFileEntry>> *' 转换为 'ATL::CAdapt&l

构建 ATL 项目

Visual Studio:无法将ATL类添加到ATL项目中?

将实现ATL接口的VBA类传递给ATL方法