visual Какие DLL я могу импортировать при использовании DirectShow или других COM-библиотек в C ++?

Я пытаюсь использовать Компилятор COM Поддержка при вызове DirectShow из C ++. Из предыдущий пост Я знаю что мне нужно #import quartz.dll и qedit.dll. Это дает мне умные классы указателей, такие как IGraphBuilderPtr среди прочих, и я вижу, что это поддерживается IntelliSense. Я сейчас пытаюсь использовать ICaptureGraphBuilder2 но он не обнаруживается в IntelliSense и пытается #import devenum.dll, qcap.dll дает мне "C1803: Cannot open type library file", Итак, пара вопросов:

  1. Какие библиотеки мне нужны #import при использовании интерфейсов DirectShow?
  2. В целом, учитывая библиотеку COM, как мне узнать, какие DLL я могу импортировать?

0

Решение

Для разработки 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.

1

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]