![](/img/trans.png)
[英]How to generate deprecated warning for a method in a COM interface (c++)
[英]Access a COM Interface method C++
都:
指定了以上內容,並使用:
返回上面的CLSID指定的類的單個未初始化對象。
然后如何從C ++訪問接口的方法? 沒有:
之后,我使用CreateInstance()
我在使用CreateInstance()-最后一個參數-ppv時遇到麻煩
使用oleview,我可以看到上面IID上方具有指定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-請原諒我對COM缺乏理解
此外,下面如何使用純C ++調用該方法:
HRESULT Open([in] BSTR FileName)
您可能需要#import“ something.dll”。 這將為您提供像IS8Simulation這樣的類型的C ++聲明,類似於#include“ something.h”會執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.