我正在尝试使用来自C++的.NET调试应用程序接口。
为此,我像这样初始化它(我删除了一些检查,以使代码更紧凑和切中要害):
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的对象。
我做错了什么?
发布于 2011-12-16 22:22:22
好吧,看起来托管回调类不应该是一个伪类。
它必须自己实现一些东西。
http://blogs.msdn.com/b/mithuns/archive/2006/12/22/why-does-icordebug-setmanagedhandler-return-e-nointerface.aspx
https://stackoverflow.com/questions/8534281
复制相似问题