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吗?还有什么?有人可以帮助我找出答案吗?
答案 0 :(得分:5)
您可以使用Windows SDK COM/OLE Object Viewer
打开类型库,看看里面有什么:
它定义了您可以在类型库中使用的某些接口和类型,因为您可以通过引用stdole2.tlb
使它们可用。
答案 1 :(得分:0)
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
{
...
通过观察它们都具有相同的uuid
但stdole2
具有更晚的version
属性来确认。
此外,如果您比较两者的IDL,您可以具体看到新的IDL与第一个的不同之处。主要是它为一些接口添加了一些属性,并且还添加了一堆新的typedef,接口等(这里添加的时间太长而不是真正需要回答这个问题)。
奇怪的是,与DLL不同,版本或其他信息没有文件属性(Windows资源管理器中“属性”视图的“详细信息”选项卡)。