В Visual Community 2015 у меня есть проект C ++.
В верхней части файла cpp у меня есть
#include "stdafx.h"#include "VideoCaptureFilterSample.h"#include "VideoCaptureFilterSampleDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
Я также установил при вводе свойств проекта> Каталоги VC ++, в которые я добавил этот каталог: C: \ Program Files% 28×86% 29 \ Microsoft SDKs \ Windows \ v7.1 \ Samples \ multimedia \ directshow \ baseclasses
Проблема заключается в том, когда я набираю в своем коде это:
hr = CoCreateInstance(CLSID_SampleGrabber, NULL, CLSCTX_INPROC_SERVER,
IID_PPV_ARGS(&pGrabberF));
CLSID_SampleGrabber не определен.
Что я пробовал до сих пор? Скачал DirectX SDK 9 и 6 и Microsoft SDK 7.1 и искал в google файл qedit.h, но я не нашел файл. Не могу понять, как определить CLSID_SampleGrabber
CLSID_SampleGrabber
был удален из Windows SDK давно, вам нужно столько же лет, сколько Версия 6.1 Windows SDK найти декларацию. Реализация была удалена из операционной системы Windows только недавно (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, не дает вам этого.
Смотрите также:
Объявите это следующим образом: extern "C" { extern GUID CLSID_SampleGrabber; }
Тогда не забудьте ссылку на amstrmid.lib. Вы можете извлечь символ из каталогов libs, если вам нужны другие.
Я не проверил это полностью, так как у меня не было удобных файлов примеров dshow, но когда я отлаживал его, он решил c1f400a0-3f08-11d3-9f0b-006008039e37
или что-то типа того; теперь вы можете найти гораздо больше об этом, если вы заглянете в Google для первой части этого GUID: иногда с волшебными гидами все, что вам нужно, это крошечный крючок, а затем вы можете легко выкопать все остальное.