У меня есть интерфейс (ITask), который реализован COM-объектом VB6. У меня есть C ++ COM-объект, который использует интерфейс, и он обычно работает нормально.
Однако, когда я запускаю отладчик VB6 для отладки COM-объекта VB6, мой объект C ++ внезапно получает E_NOINTERFACE, когда он вызывает QueryInterface для объекта VB6 для интерфейса ITask.
Определение интерфейса:
[
object,
uuid(XXXX),
pointer_default(unique),
oleautomation
]
interface ITask : IUnknown
{
[id(1)] HRESULT CreateTask([in, string] BSTR taskName);
}
C ++ код:
hResult = pDisp->QueryInterface(IID_ITask, (void **) &m_pTaskApp);
(pDisp
- это IDispatch *
для COM-объекта VB6, который я получил посредством вызова другого компонента, который управляет временем жизни объекта)
Вызов QueryInterface для IID_IDispatch успешно выполняется, когда COM-объект VB6 выполняет отладчик.
Есть идеи?
РЕДАКТИРОВАТЬ - Добавить код VB6:
Implements ITask
Private Sub ITask_CreateTask(ByVal taskName as String)
' do stuff
End Sub