首页 > 解决方案 > 如何获取 COM 实例的另一个接口?

问题描述

假设我们有一个CLSID_Abc提供 2 个接口IFooIBar. 因此,我们已经能够在客户端中执行此操作:

IFoo *foo = nullptr;
::CoCreateInstance(CLSID_Abc, NULL, CLSCTX_INPROC_SERVER, IID_IFoo, (void **)&foo);
foo->a_method_of_ifoo();
IBar *bar;
foo->QueryInterface(IID_IBar, (void **)&bar);
bar->a_method_of_ibar();

现在我们要使用由 .tlb 文件支持的语法。所以我们可以这样做

using namespace Baz;
IFooPtr foo;
foo.CreateInstance("a_mysterious_string_that_I_dont_know_what_it_is_yet_but_lets_pretend_it_works");
foo->a_method_of_ifoo();

问题是使用 .tlb 文件提供的语法时IBar如何获取接口?foo

标签: visual-c++com

解决方案


推荐阅读