【发布时间】:2011-11-18 19:46:00
【问题描述】:
我正在尝试连接一个通过 .TLB 导出自动化兼容接口的库。
TLB 在接口内列出functions 以检索对象引用; .TLH 将这些作为非静态成员函数包括在内,这让我很难在没有对象引用的情况下调用它们;因此,我这里有点鸡和蛋的问题。
从 C++ 调用 functions 的正确方法是什么?
【问题讨论】:
我正在尝试连接一个通过 .TLB 导出自动化兼容接口的库。
TLB 在接口内列出functions 以检索对象引用; .TLH 将这些作为非静态成员函数包括在内,这让我很难在没有对象引用的情况下调用它们;因此,我这里有点鸡和蛋的问题。
从 C++ 调用 functions 的正确方法是什么?
【问题讨论】:
在 .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();
【讨论】: