Ошибка компилятора для устаревшего COMType с использованием DirectShow
Я кодирую маленькое приложение, которое делает фотографию пользователя для печати на идентификационной карточке. Я посмотрел вокруг и нашел несколько различных примеров этого в C#
это было бы идеально для меня, за исключением 2 вопросов, оба достижения UCOM
элемент теперь устарел в более новой .NET
рамки.
Это код, который дает ошибку:
int hr = devEnum.CreateClassEnumerator(FilterCategory.VideoInputDevice, out classEnum, CDef.None);
И это точная формулировка ошибки:
Ошибка 2 Аргумент 2: невозможно преобразовать из out.System.Runtime.InteropServices.ComTypes.IEnumMoniker'в System.Runtime.InteropServices.UCOMIEnumMoniker' E:\Programming\Application Files\WebCamControl2\WebCamControl2.cs 108 89 WebCamControl
Я использую DirectShow DLL, которая последний раз использовалась в 2005 году, и она использует UCOMIEnumMoniker
а также UCOMIMoniker
которые были изменены на IEnumMoniker
а также IMoniker
соответственно.
Как я могу обойти эту ошибку компиляции? Могу ли я привести новый тип к старому, даже если он устарел, или мне нужно отказаться от использования библиотеки DirectShow?
1 ответ
Вы обычно не имеете дело с UCOMxxx
типы, если вы не работаете с древними версиями.NET. Из источника DirectShow.NET:
#if USING_NET11
[Out] out UCOMIEnumMoniker ppEnumMoniker,
#else
[Out] out IEnumMoniker ppEnumMoniker,
#endif
Вы должны узнать, где вы получаете UCOMIEnumMoniker
в вашем проекте точно, и скорее всего его там быть не должно.