DirectShow过滤器错误“类未注册”

时间:2013-07-08 12:32:44

标签: c++ com directshow regsvr32 graphedit

在我的cpp / win32项目下使用以下代码,我收到错误“class is not registered”

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:这是一个在64位Windows 7系统下注册的32位过滤器。在注册表中,我还可以在sysWOW3264(在64位窗口上运行的32位Windows应用程序的镜像注册表)下找到过滤器。

您还可以在我http://www.codeproject.com/Messages/4603967/Class-not-registered-error.aspx

的代码项目帖子中查询和查找源代码

1 个答案:

答案 0 :(得分:0)

感谢Roman R,我的代码中的问题是错误的CLSID声明。