2017-09-04 3 views
0

Ich bin eine kleine App codieren, die ein Benutzerbild auf einer ID-Karte gedruckt wird. Ich habe mich umgesehen und eine Reihe verschiedener Beispiele in C# gefunden, die für mich perfekt wären, außer für zwei Ausgaben, die beide zu einem UCOM Element führen, das jetzt in den neueren .NET Gerüsten veraltet ist.Compiler-Fehler für veraltete COMType mit DirectShow

Dies ist der Code, der den Fehler verursacht:

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

Und dies ist der genaue Wortlaut des Fehlers:

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

Ich bin mit dem Directshow-DLL, die zuletzt im Jahr 2005 verwendet wurde und Es werden UCOMIEnumMoniker und UCOMIMoniker verwendet, die in IEnumMoniker bzw. IMoniker geändert wurden.

Wie kann ich diesen Kompilierungsfehler umgehen? Kann ich den neueren Typ als den alten Typ verwenden, selbst wenn er veraltet ist, oder muss ich die Idee der Verwendung der DirectShow-Bibliothek verwerfen?

+0

"die geändert wurden". Die Ausnahme sagt Ihnen, dass sie nicht geändert wurden. Sie verwenden immer noch die alte DLL. Verwenden Sie Fuslogvw.exe und protokollieren Sie alle Bindungen, wenn Sie keine Ahnung haben, wie dies geschah. Hüten Sie sich davor, in der GAC zu sein und vergessen Sie, die [AssemblyVersion] zu erhöhen. –

Antwort

0

Normalerweise behandeln Sie keine UCOMxxx Typen, außer Sie arbeiten mit alten .NET-Versionen. Von DirectShow.NET Quelle:

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

sollten Sie herausfinden, wo Sie UCOMIEnumMoniker in Ihrem Projekt genau das bekommen, und wahrscheinlich ist es nicht dort sein sollte.