Я пытаюсь понять, как добавить некоторые возможности DirectShow в приложение С# (.net cf 3.5, работающее на мобильных устройствах 6 и выше), и мне трудно понять, как преодолеть разрыв между использованием неуправляемого класса С++ (es) в управляемом C#.
Я уже написал необходимые мне функции на C++: по сути, у меня есть класс менеджера, который использует COM для доступа к необходимым функциям DirectShow. Краткий отказ от ответственности. Я новичок в COM и ОЧЕНЬ новичок в интеграции C++ с C#.
Я действительно надеюсь, что кто-то знающий может предложить мне базовую стратегию для дальнейшего исследования. Вот некоторые из них, которые я изучил, и проблемы, которые я обнаружил с ними:
Создайте C++ DLL, а затем вызовите ее из C#.
ПРОБЛЕМА. Поскольку я работаю на платформе смарт-устройств, создание управляемой C++ DLL не вариант, поэтому C#, к сожалению, победил не могу напрямую вызывать мою С++ dll. Является ли лучшим вариантом создание экземпляра моего неуправляемого класса C++ "dshow manager" из C# (через COM)?Создайте C++ DLL, а затем просто Pinvoke/DLLIимпортируйте необходимые методы.
ПРОБЛЕМА. В моем решении есть прослушиватель событий и прочее, поэтому мне нужно поддерживать экземпляр класса менеджера (см. вариант 3), а не просто вызывать отдельные методы.Скопируйте класс C++ в C#, а затем просто вызовите методы dshow через COM из C#. ПРОБЛЕМА. Мне это кажется лучшим вариантом, но из того, что я нашел здесь MSDN, мне нужно сначала "создать управляемые определения com-интерфейсов и типов", и, к сожалению, я не удается найти файлы TLB directshow для импорта через TLBImp.exe. Все, что дает мне WM6 SDK, это dshow LIB, PDB и EXP. Я даже не могу найти файлы IDL для создания TLB, как предлагают некоторые сайты.
В нынешнем виде я все еще изучаю вещи, но сейчас как-то застрял. Какие-либо предложения? ЗАРАНЕЕ СПАСИБО!