题
两个都:
- 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" 的作用。
不隶属于 StackOverflow