2017-09-04 93 views
0

我正在編寫一個小型應用程序,它將用戶圖片打印在身份證上。我環顧四周,在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]。 –

回答

0

除非您正在使用古老的.NET版本,否則通常不會處理UCOMxxx類型。從DirectShow.NET來源:

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

你應該找出你在項目中得到​​準確,而且很可能它不應該存在。 「已經改變」的