Ошибка фильтра DirectShow & quot; Класс не зарегистрирован & quot;

Используя следующий код в моем проекте cpp / win32, я получаю сообщение об ошибке «класс не зарегистрирован»

hr = CoCreateInstance(CLSID_PIAsyncFile, NULL, CLSCTX_INPROC, IID_IBaseFilter, (void**) &ppF);

if (SUCCEEDED(hr)) {

hr = pGraph->AddFilter(ppF, L"My Async Source (File)");

}

Это неправда, так как мой фильтр отлично работает под GraphEdit, и я также могу найти его, используя перечисляющие имена IFilterMapper2. Я также могу успешно привязать к объекту из фильтров прямого показа.

hr = pMoniker->BindToObject(0, 0, IID_IBaseFilter, (void**)&ppF);

Итак, что не так с CoCreateInstance ?

PS: это 32-битный фильтр, который зарегистрирован под 64-битной системой Windows 7. В реестре я также могу найти фильтр под sysWOW3264 (зеркальный реестр для 32-битных приложений Windows, работающих на 64-битных Windows).

Вы также можете обратиться и найти исходный код в моем посте codeproject по адресу http://www.codeproject.com/Messages/4603967/Class-not-registered-error.aspx

0

Решение

Благодаря Роману Р. проблема заключалась в неправильном объявлении CLSID в моем коде.

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]