2017-09-04 11 views
0

사용자 사진을 ID 카드에 인쇄하는 작은 응용 프로그램을 코딩하고 있습니다. 나는 주위를 둘러 보았고 C#에서 많은 다른 예제를 발견했다.이 두 가지 문제는 프레임 워크에서 현재 사용되지 않고있는 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

내가 마지막으로 2005 년에 사용 된 DirectShow에서 DLL을 사용하고 있습니다 IEnumMonikerIMoniker으로 각각 변경된 UCOMIEnumMonikerUCOMIMoniker을 사용합니다.

어떻게이 컴파일 오류를 해결할 수 있습니까? 내가 더 이상 쓸모가 없거나 DirectShow 라이브러리를 사용하는 아이디어를 고쳐야 만해도 새로운 형식을 이전 형식으로 캐스팅 할 수 있습니까?

+0

"변경되었습니다." 예외는 변경되지 않았 음을 알려줍니다. 여전히 이전 DLL을 사용하고 있습니다. Fuslogvw.exe를 사용하고 어떻게 이런 일이 발생했는지 모를 경우 모든 바인드를 기록하십시오. GAC에있는 것을 잊지 말고 [AssemblyVersion]을 늘리는 것을 잊어 버리십시오. –

답변

0

고대 .NET 버전으로 작업하는 경우가 아니면 일반적으로 UCOMxxx 유형을 처리하지 않습니다. DirectShow.NET 소스에서 :

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

정확히 프로젝트에 UCOMIEnumMoniker을 얻을 어디 있는지 찾아해야하고, 가장 가능성이 없을 것이다.