【问题标题】:Initial Object Reference for OLE Automation Object with constructor带有构造函数的 OLE 自动化对象的初始对象引用
【发布时间】:2011-11-18 19:46:00
【问题描述】:

我正在尝试连接一个通过 .TLB 导出自动化兼容接口的库。

TLB 在接口内列出functions 以检索对象引用; .TLH 将这些作为非静态成员函数包括在内,这让我很难在没有对象引用的情况下调用它们;因此,我这里有点鸡和蛋的问题。

从 C++ 调用 functions 的正确方法是什么?

【问题讨论】:

    标签: c++ com ole


    【解决方案1】:

    在 .tlb 文件上使用#import,然后使用适当智能指针类型的CreateInstance() 方法来实例化对象,然后调用成员函数。

    类似这样(省略错误处理):

     #import ThatTlbFile.tlb
    
     //at some point in your code you have to init COM
     CoInitialize(0);
    
     // once COM is initialized
     IInterfaceOfInterestPtr object;
     // this will ask COM to instantiate an object    
     object.CreateInstance( __uuidof( ComClassOfInterest ) );
     object->CallMethod();
    

    【讨论】:

    • 不是我要找的东西(我知道这一点),但显然我假设这个函数是一个构造函数是错误的——相反,我正在查看的接口有一个打开相关对象的方法,并且由于没有注册类实现接口,我假设这些是 ctor 函数。我现在找到了与组件对话的根对象,它已注册并具有我需要的对象的工厂方法。
    猜你喜欢
    • 1970-01-01
    • 2012-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-08-14
    • 2020-07-30
    相关资源
    最近更新 更多