两个都:

  • CLSID
  • 独立ID

指定上述内容后,并使用:

  • CoCreateInstance()

返回由上面的 CLSID 指定的类的单个未初始化对象。

那么我怎样才能从 C++ 访问接口的方法呢?没有:

  • ATL
  • 微量燃料电池
  • 只是简单的 C++

之后,我使用 CreateInstance()

我在使用 CreateInstance() 时遇到了麻烦 - 带有最后一个参数 - ppv

使用oleview,我可以看到上面指定IIDabove IID的方法,例如:

interface IS8Simulation : IDispatch {
    HRESULT Open([in] BSTR FileName);
};

我怎样才能访问上述内容?示例/指导 - 请

问候

有帮助吗?

解决方案

通过执行 CoCreateInstance,您可以获得一个接口指针。通过 QueryInterface(...) 方法,您可以轻松获取其他接口的接口指针。例如。,


IUnknown* pUnk = NULL;
HRESULT hr = ::CoCreateInstance(clsid,NULL,CLSCTX_ALL,__uuidof(IUnknown),(void**)&pUnk);

IS8Simulation* pSim = NULL;hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void**)&pSim);

完成此操作后,您将在 pSim 中获得指向 IS8Simulation 的指针,并通过它可以调用该接口的方法。请记住,您需要在 CoCreateInstance 调用中提供有效的 clsid。

其他提示

实际问题是什么有点模糊。一些代码会有帮助。但猜测一下,您需要 QueryInterface 吗?

 IS8Simulation* pSim = NULL;
 hr = pUnk->QueryInterface(__uuidof(IS8Simulation), (void)&pSim);

我将尝试上述操作,但已声明 IS8Simulation - 请原谅我的缺乏 通讯 理解

此外,如何调用该方法,下面使用 纯C++:

HRESULT Open([in] BSTR FileName)

您可能想要#import“something.dll”。这将为您提供 IS8Simulation 等类型的 C++ 声明,类似于 #include "something.h" 的作用。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top