问题描述
在视觉社区2015中,我有一个c ++项目.在cpp文件顶部,我有
In visual community 2015 I have a c++ project.In the cpp file top I have
#include "stdafx.h"
#include "VideoCaptureFilterSample.h"
#include "VideoCaptureFilterSampleDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
我在输入项目属性时也进行了设置> VC ++目录,我在以下目录中添加了此目录:C:\ Program Files%28x86%29 \ Microsoft SDKs \ Windows \ v7.1 \ Samples \ multimedia \ directshow \ baseclasses
I also set when entering the project properties > VC++ Directories I added this directory in include: C:\Program Files %28x86%29\Microsoft SDKs\Windows\v7.1\Samples\multimedia\directshow\baseclasses
问题是当我输入以下代码时:
The problem is when I type in my code this:
hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pGrabberF));
未定义CLSID_SampleGrabber.
The CLSID_SampleGrabber not defined.
到目前为止,我尝试了什么?下载了DirectX SDK 9和6和Microsoft SDK 7.1,并在Google中搜索了qedit.h,但我没有找到该文件.无法弄清楚如何定义CLSID_SampleGrabber
What I tried so far ? Downloaded directx sdk 9 and 6 and Microsoft sdk 7.1 and searched in google for qedit.h but I didn't find the file. Can't figure out how to define the CLSID_SampleGrabber
推荐答案
CLSID_SampleGrabber
早已从Windows SDK中删除,您需要与版本6.1 Windows SDK 来查找声明.该实现是最近才从Windows操作系统中删除的(Windows Server 2012?).
CLSID_SampleGrabber
was removed from Windows SDK long ago, you need as old as version 6.1 Windows SDK to find the declaration. The implementation was removed from Windows operating system only recently (Windows Server 2012?).
您可以按照此示例:
#pragma region Re-Adding Removed from Windows SDK qedit.h
struct __declspec(uuid("0579154a-2b53-4994-b0d0-e773148eff85"))
ISampleGrabberCB : IUnknown
...
struct __declspec(uuid("c1f400a0-3f08-11d3-9f0b-006008039e37"))
SampleGrabber;
// [ default ] interface ISampleGrabber
...
CComPtr<IBaseFilter> pSgBaseFilter;
ATLENSURE_SUCCEEDED(pSgBaseFilter.CoCreateInstance(__uuidof(SampleGrabber)));
链接amstrmid.lib是一个很好的提示,但是几乎不需要单独使用 CLSID_SampleGrabber
,也需要 ISampleGrabber
和朋友,并且该库仍在托管(如副作用)GUID不能帮助您.
Linking amstrmid.lib is a good hint, but you almost never need CLSID_SampleGrabber
alone, you also need ISampleGrabber
and friends as well, and the library still hosting (as a side effect) the GUIDs don't get you that.
另请参阅:
这篇关于如何在vc ++中使用samplegrabber?未定义samplegrabber的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!