【问题标题】:What is stdole2.tlb什么是 stdole2.tlb
【发布时间】:2012-03-07 00:31:06
【问题描述】:

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?还有什么?有人可以帮我找出来吗?

【问题讨论】:

    标签: com atl midl


    【解决方案1】:

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

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

    【讨论】:

    • 当我尝试打开 stdole2.tlb 时显示“文件扩展名错误”
    • 你可能做错了什么,但别担心 - 我打开它并为你附上了屏幕截图。
    • 是的,我使用了错误的菜单项。奇怪,当我尝试打开 stdole32.tlb 它仍然打开 stdole2.tlb
    【解决方案2】:

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

    【讨论】:

      猜你喜欢
      • 2011-04-14
      • 2013-03-15
      • 2020-05-03
      • 2017-05-01
      • 2010-10-12
      • 2013-12-07
      • 2013-12-11
      • 2015-05-18
      • 2015-07-29
      相关资源
      最近更新 更多