0
我想從C++中使用.NET調試API。
爲此,我初始化它像這樣(我刪除了一些檢查,以使代碼更緊湊,重點突出):.NET調試API SetManagedHandler返回E_NOINTERFACE
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
的對象。
我在做什麼錯?