什么是stdole2.tlb

时间:2012-02-15 16:30:12

标签: com atl midl

stdole32.tlb包含所有基类型定义,如果我们使用MIDL,每个lib都必须导入它。但是当我创建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吗?还有什么?有人可以帮助我找出答案吗?

2 个答案:

答案 0 :(得分:5)

您可以使用Windows SDK COM/OLE Object Viewer打开类型库,看看里面有什么:

enter image description here

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

答案 1 :(得分:0)

stdole2.tlbstdole32.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资源管理器中“属性”视图的“详细信息”选项卡)。