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?
"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. –