使用DirectShow过时COMType的编译器错误

问题描述:

我正在编写一个小型应用程序,它将用户图片打印在身份证上。我环顾四周,在C#中发现了很多不同的例子,除了两个问题,现在在新的.NET框架中已经过时的UCOM元素之外,这对我来说是完美的。使用DirectShow过时COMType的编译器错误

这是给出了错误代码:

int hr = devEnum.CreateClassEnumerator(FilterCategory.VideoInputDevice, out classEnum, CDef.None); 

这是错误的确切写法:

Error 2 Argument 2: cannot convert from 'out System.Runtime.InteropServices.ComTypes.IEnumMoniker' to 'out System.Runtime.InteropServices.UCOMIEnumMoniker' E:\Programming\Application Files\WebCamControl2\WebCamControl2.cs 108 89 WebCamControl2

我使用的是DirectShow的DLL,它上次于2005年使用它使用分别被更改为IEnumMonikerIMoniker的​​和UCOMIMoniker

我该如何解决这个编译错误?我是否可以将旧类型转换为旧类型,即使它已经过时,还是必须废除使用DirectShow库的想法?

+0

。异常告诉你他们没有改变。您仍在使用旧的DLL。如果您不知道这是如何发生的,请使用Fuslogvw.exe并记录所有绑定。注意它在GAC中,忘记增加[AssemblyVersion]。 –

除非您正在使用古老的.NET版本,否则通常不会处理UCOMxxx类型。从DirectShow.NET来源:

#if USING_NET11 
      [Out] out UCOMIEnumMoniker ppEnumMoniker, 
#else 
      [Out] out IEnumMoniker ppEnumMoniker, 
#endif 

你应该找出你在项目中得到​​准确,而且很可能它不应该存在。 “已经改变”的