Com 什么是stdole2.tlb
tlb包含所有基类型定义,如果我们使用MIDL,每个库都必须导入它。但当我创建ATL DLL项目时,lib文件看起来是这样的Com 什么是stdole2.tlb,com,atl,midl,Com,Atl,Midl,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中
import "oaidl.idl";
import "ocidl.idl";
[
uuid(4CA3ADAD-AE53-4D80-AF26-176BAF8223B1),
version(1.0),
]
library FirstATLLib
{
importlib("stdole2.tlb");
};
我无法用谷歌搜索stdole2.tlb中的内容?它是否包含stdole32.tlb?还有什么?有人能帮我弄清楚吗 您可以使用Windows SDK
COM/OLE对象查看器
打开类型库并查看其中的内容:
它定义了您可以在类型库中使用的某些接口和类型,因为您可以通过引用stdole2.tlb使它们可用。tlb
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
{
...
// typelib filename: stdole32.tlb
[
uuid(00020430-0000-0000-C000-000000000046),
version(1.0),
helpstring("OLE Automation")
]
library stdole
{
...
从stdole32.tlb开始:
// typelib filename: stdole2.tlb
[
uuid(00020430-0000-0000-C000-000000000046),
version(2.0),
helpstring("OLE Automation")
]
library stdole
{
...
// typelib filename: stdole32.tlb
[
uuid(00020430-0000-0000-C000-000000000046),
version(1.0),
helpstring("OLE Automation")
]
library stdole
{
...
通过观察它们都具有相同的uuid
,但stdole2
具有更高的version
属性,可以证实这一点
此外,如果您比较这两个IDL,您可以看到较新的IDL与第一个IDL有什么不同。主要是它为一些接口添加了一些属性,还添加了一些新的typedef、接口等(此处添加太长,不需要回答问题)
奇怪的是,与DLL不同,它没有包含版本或其他信息的文件属性(Windows资源管理器中“属性”视图的“详细信息”选项卡)。当我尝试打开stdole2时,它会显示“文件扩展名不正确”。t您可能做错了什么,但别担心-我确实打开了它,并为您附加了一个屏幕截图。是的,我使用了错误的菜单项。奇怪的是,当我试图打开stdole32.tlb时,它仍然会打开stdole2.tlb