Я пытаюсь использовать Компилятор COM Поддержка при вызове DirectShow из C ++. Из предыдущий пост Я знаю что мне нужно #import
quartz.dll и qedit.dll. Это дает мне умные классы указателей, такие как IGraphBuilderPtr
среди прочих, и я вижу, что это поддерживается IntelliSense. Я сейчас пытаюсь использовать ICaptureGraphBuilder2
но он не обнаруживается в IntelliSense и пытается #import
devenum.dll, qcap.dll дает мне "C1803: Cannot open type library file"
, Итак, пара вопросов:
#import
при использовании интерфейсов DirectShow?Для разработки C ++ вам не нужно #import
, Вместо этого вы
#include <dshow.h>
#pragma comment(lib, "strmiids.lib")
У вас есть умные указатели с ATL, например CComPtr<IFilterGraph2>
(или же QzCComPtr
что имеет смысл, только если вы разрабатываете фильтр, а не пользовательский код DirectShow высокого уровня).
Следовательно,
Какие библиотеки DLL мне нужно импортировать при использовании интерфейсов DirectShow?
Никто.
В целом, учитывая библиотеку COM, как мне узнать, какие DLL я могу импортировать?
Вам нужно знать имя DLL или, скорее, идентификатор библиотеки типов. Вы получаете это из документации или поиска, используя инструменты SDK, такие как COM / OLE Viewer, или через реестр. Я бы порекомендовал импортировать, используя идентификатор библиотеки типов.
Из кода C ++ он делает импорт DLL-файлов DirectShow только в том случае, если вам нужны GUID, которые устарели и исключены из SDK.
Других решений пока нет …