|
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492
|
||||||
Как использовать DLL (СОМ-объект) без регистрации (фильтр DirectShow)28.05.2022, 21:34. Показов 1672. Ответов 6
Метки нет (Все метки)
Я хочу подключить фильтр к графу DirectShow без регистрации DLL, в которой реализован фильтр (COM-объект).
Прочитал статью, в которой предлагается способ. код приведен ниже - последние строки собственно и подключают фильтр к графу. Может мне кто-нибудь объяснить как работает строка (внизу), т.е. корректна ли она : IBaseFilterPtr pFilter = pUnk ? Насколько я понимаю pUnk - это указатель на IUnknown, т.е. тип не соответствует типу pFilter. У меня она не компилируется (IBaseFilterPtr я заменил на IBaseFilter*, а IUnknownPtr на IUnknown*, т.к. не нашел этих типов в примере, но по логике это должны быть такие определения). Когда пробовал у себя провернуть то же самое, использовал IBaseFilter* pFilter = (IBaseFilter*) pUnk, то AddFilter "вылетал" с ошибкой - из чего я делаю вывод, что мое приведение типов некорректно. Мой вопрос: каким образом получить из pUnk корректный указатель на фильтр, чтобы добавить его к графу ?
0
|
||||||
| 28.05.2022, 21:34 | |
|
Ответы с готовыми решениями:
6
Как использовать ActiveX без регистрации Как использовать COM-объект (dll) DirectShow как добавить фильтр? |
|
COM‐пропагандист
|
|||||||
| 28.05.2022, 23:02 | |||||||
|
Например, вы можете запросить нужный вам интерфейс у вашего пУньк через метод QueryInterface. Может быть что‐то вроде такого:
Если вы делаете COM DLL, то такая библиотека должна быть оформлена по всем правилам COM, то есть должна иметь экспортируемые функции вроде DllGetClassObject и DllCanUnloadNow. Ну а если вы просто создаёте свою реализацию интерфейса IBaseFilter, то можете обойтись без DLL, просто подсовывать указатель на вашу реализацию интерфейса IBaseFilter куда просят. Добавлено через 12 минут
0
|
|||||||
|
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492
|
|||||||||||||||||||||
| 29.05.2022, 23:00 [ТС] | |||||||||||||||||||||
|
спасибо за ответ.
Еще прошу подсказать по созданию собственного интерфейса для COM-объекта. Я взял из SDK пример фильтра DUMP к DirectShow и решило добавить свой интерфейс. мои шаги по дббавлению интерфейса: 1) В определение COM-объекта (CDump) добавляем свой интерфейс IMyInterface
2) Объявляем свой интерфейс IMyInterface
3) Возврат ссылки на наш интерфейс:
Навскидку, не пропустил ли я каких-то важных шагов при создании интерфейса ?
0
|
|||||||||||||||||||||
|
COM‐пропагандист
|
|||
| 29.05.2022, 23:09 | |||
|
Реализацию пишите в своём производном классе. Добавлено через 2 минуты Вы запрашиваете IID_DumpInterface, который вы точно реализовали и объявили, что его поддерживаете в QueryInterface?
0
|
|||
|
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492
|
|||||||||||
| 29.05.2022, 23:30 [ТС] | |||||||||||
|
Прошу прощения, что ввел в заблуждение, переименовывал гуиды - было IID_MyInterface, заменено на другое имя:
В части Вашего замечания о виртуальности класса - возможно это не соответствует теоретическому подходу - сделано исключительно для упрощения, это изменю, а разве это может повлиять на опознаваемость наличия интерфейса ? У меня сейчас проблема именно в этом. Добавлено через 4 минуты Еще после ввсего этого я нашел примеры объявления своего интерфейса - см. ниже. Я не использовал макрос DECLARE_INTERFACE_ (честно говоря, еще не изучил этот вопрос). Может Вы подскажете - неиспользование такого шаблона может ли быть причиной, что интерфейс не опознан ? У меня складывается впечатление, что это не должно влиять на опознавание (на работоспособность - возможно, но до вызова ф-ций интерфейса я пока не дошел).
0
|
|||||||||||
|
COM‐пропагандист
|
|||||||
| 30.05.2022, 00:22 | |||||||
1
|
|||||||
|
-23 / 4 / 0
Регистрация: 15.08.2014
Сообщений: 492
|
|
| 30.05.2022, 21:22 [ТС] | |
|
Спасибо за подсказки.
Нашел в чем ошибка, к счастью - это исключительно мой недосмотр, а не по причине несоблюдения методологии COM.
0
|
|
| 30.05.2022, 21:22 | |
|
Помогаю со студенческими работами здесь
7
Как использовать dll, без её функций Как создать фильтр для DirectShow в Delphi?
Prolog как СОМ-объект (windows) Использовать ли Directshow, или лучше как-то по-другому Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога
Финальные проекты на Си и на C++:
hello-sdl3-c. zip
hello-sdl3-cpp. zip
Результат:
|
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога
MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
|
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд.
Даже если у вас. . .
|
Модульная разработка через nuget packages
DevAlt 07.03.2026
Сложившийся в . Net-среде способ разработки чаще всего предполагает
монорепозиторий в котором находятся все исходники.
При создании нового решения, мы просто добавляем нужные проекты
и имеем. . .
|
|
Модульный подход на примере F#
DevAlt 06.03.2026
В блоге дяди Боба наткнулся на такое определение:
В этой книге («Подход, основанный на вариантах использования») Ивар утверждает,
что архитектура программного обеспечения — это
структуры,. . .
|
Управление камерой с помощью скрипта OrbitControls.js на Three.js: Вращение, зум и панорамирование
8Observer8 05.03.2026
Содержание блога
Финальная демка в браузере работает на Desktop и мобильных браузерах. Итоговый код: orbit-controls-threejs-js. zip. Сканируйте QR-код на мобильном. Вращайте камеру одним пальцем,. . .
|
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip
На первой гифке отладочные линии отключены, а на второй включены:. . .
|
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога
Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip Сканируйте QR-код на мобильном и вы увидите, что появится джойстик для управления главным героем.
. . .
|