首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >.NET调试接口SetManagedHandler返回E_NOINTERFACE

.NET调试接口SetManagedHandler返回E_NOINTERFACE
EN

Stack Overflow用户
提问于 2011-12-16 20:38:44
回答 1查看 104关注 0票数 0

我正在尝试使用来自C++的.NET调试应用程序接口。

为此,我像这样初始化它(我删除了一些检查,以使代码更紧凑和切中要害):

代码语言:javascript
复制
typedef HRESULT (STDAPICALLTYPE *CreateDebuggerFunc)(int debuggerVersion, LPCWSTR szDebuggeeVersion, IUnknown ** ppCordb);
HMODULE mscoree = LoadLibraryA("mscoree.dll");
CreateDebuggerFunc CreateDebugger = (CreateDebuggerFunc)GetProcAddress(mscoree, "CreateDebuggingInterfaceFromVersion");
const int iDebuggerVersion = CorDebugVersion_2_0; // if we’re a v2.0 debugger.
IUnknown* unknown = NULL;
wchar_t * szEverettVersion = L"v2.0.50727";//v4.0.30319";
HRESULT res = CreateDebugger(iDebuggerVersion, szEverettVersion, &unknown);
res = unknown->QueryInterface(IID_ICorDebug, (void**) &m_core);
res = m_core->Initialize();
NetCallbacks* test = new NetCallbacks();
res = m_core->SetManagedHandler(test);

NetCallbacks类目前只是一个虚拟类,它实现了ICorDebugManagedCallback和ICorDebugManagedCallback2的空方法。

但是由于某些原因,当我调用m_core->SetManagedHandler时,我得到了E_NOINTERFACE。这怎么可能呢?如果我没有实现所有必需的方法,我就不能创建NetCallbacks的对象。

我做错了什么?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-12-16 22:22:22

好吧,看起来托管回调类不应该是一个伪类。

它必须自己实现一些东西。

http://blogs.msdn.com/b/mithuns/archive/2006/12/22/why-does-icordebug-setmanagedhandler-return-e-nointerface.aspx

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/8534281

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档