4

stdole32.tlb 包含所有基本类型定义,如果我们使用 MIDL,每个库都必须导入它。但是当我创建 ATL DLL 项目时,lib 文件看起来像这样

import "oaidl.idl";
import "ocidl.idl";

[
    uuid(4CA3ADAD-AE53-4D80-AF26-176BAF8223B1),
    version(1.0),
]
library FirstATLLib
{
    importlib("stdole2.tlb");
};

我无法用谷歌搜索 stdole2.tlb 中的内容?它是否包含 stdole32.tlb?还有什么?有人可以帮我找出来吗?

4

2 回答 2

5

您可以使用 Windows SDKCOM/OLE Object Viewer打开类型库并查看里面有什么:

在此处输入图像描述

它定义了您可以在类型库中使用的某些接口和类型,因为您通过引用使它们可用stdole2.tlb

于 2012-02-15T19:22:43.583 回答
1

stdole2.tlb是较新的版本stdole32.tlb。从使用 OleView 导出的 IDL 可以看出这一点:

stdole2.tlb

// typelib filename: stdole2.tlb

[
  uuid(00020430-0000-0000-C000-000000000046),
  version(2.0),
  helpstring("OLE Automation")
]
library stdole
{
...

stdole32.tlb

// typelib filename: stdole32.tlb

[
  uuid(00020430-0000-0000-C000-000000000046),
  version(1.0),
  helpstring("OLE Automation")
]
library stdole
{
...

通过观察它们都具有相同uuidstdole2具有较晚的version属性来证实这一点。

此外,如果您比较两者的 IDL,您可以具体了解较新的 IDL 与第一个有何不同。主要是给几个接口增加了一些属性,还增加了一堆新的typedef、接口等(这里加的太长,其实不需要回答问题)。

奇怪的是,与 DLL 不同的是,没有带有版本或其他信息的文件属性(Windows 资源管理器中属性视图的详细信息选项卡)。

于 2017-07-18T12:54:49.053 回答