ISampleGrabber未声明的标识符

时间:2014-04-24 22:33:41

标签: c++ image-processing directshow graphedit

我试图执行graphEditPlus生成的代码(使用VS2010),但遇到以下问题:

CComQIPtr<ISampleGrabber, &IID_ISampleGrabber> pSampleGrabber_isg(pSampleGrabber);

错误是: 错误C2065:&#39; ISampleGrabber&#39; :未声明的标识符 错误C2065:&#39; IID_ISampleGrabber&#39; :未声明的标识符 错误C2514:&#39; ATL :: CComQIPtr&#39; :class没有构造函数

我尝试下载不同版本的Windows SDK(V7.1,V6.0A,V5)并设置include / lib路径,但仍然遇到同样的问题!

SampleGrabber仍然受支持吗?主要是,我的代码中使用了SampleGrabber来从视频捕获源中获取帧...

感谢您的协助......

1 个答案:

答案 0 :(得分:0)

Microsoft弃用了Sample Grabber和整个DES API,但是如果您导入类型库,或者只是将声明复制到项目中 - 除了一些最新的OS版本(Windows Server 2008?)之外,该组件仍然可用。已完全消失,您可能需要另一种解决方案,例如从早期的SDK示例构建您自己的解决方案。

有关详细信息,请参阅ISampleGrabber deprecated: where can I find alternatives?

另请参阅RenderWmvVideo.cpp,其中包含要复制/粘贴的代码片段,并将声明重新添加到项目(文件顶部的#pragma部分):

#pragma region Windows SDK Tribute, qedit.h

struct __declspec(uuid("0579154a-2b53-4994-b0d0-e773148eff85"))
ISampleGrabberCB : IUnknown
{

...

#pragma endregion