使用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年使用它使用分别被更改为IEnumMoniker
和IMoniker
的和UCOMIMoniker
。
我该如何解决这个编译错误?我是否可以将旧类型转换为旧类型,即使它已经过时,还是必须废除使用DirectShow库的想法?
答
除非您正在使用古老的.NET版本,否则通常不会处理UCOMxxx
类型。从DirectShow.NET来源:
#if USING_NET11
[Out] out UCOMIEnumMoniker ppEnumMoniker,
#else
[Out] out IEnumMoniker ppEnumMoniker,
#endif
你应该找出你在项目中得到准确,而且很可能它不应该存在。 “已经改变”的
。异常告诉你他们没有改变。您仍在使用旧的DLL。如果您不知道这是如何发生的,请使用Fuslogvw.exe并记录所有绑定。注意它在GAC中,忘记增加[AssemblyVersion]。 –