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