带有构造函数的 OLE 自动化对象的初始对象引用

发布于 2024-12-17 02:16:12 字数 189 浏览 1 评论 0原文

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

TLB 列出接口内的函数以检索对象引用; .TLH 将这些作为非静态成员函数包含在内,这使得我很难在没有对象引用的情况下调用它们;因此,我在这里遇到了一个先有鸡还是先有蛋的问题。

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

I'm trying to interface a library that exports an Automation compatible interface via a .TLB.

The TLB lists functions inside the interfaces to retrieve object references; the .TLH includes these as nonstatic member functions, which makes it difficult for me to call them without an object reference; thus, I have a bit of a chicken-and-egg problem here.

What is the correct way to invoke functions from C++?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

浅黛梨妆こ 2024-12-24 02:16:12

在 .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();

Use #import on the .tlb file, then use CreateInstance() method of an appropriate smart pointer type to instantiate the object, then just call member functions.

Something like this (error handling omitted):

 #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();
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文