我正在寫一個從x64過程(SS Reporting Services)調用並需要使用x86第三方COM程序集的C#程序集。x86 COM互操作從x64 .Net程序集使用COM + - 「沒有這樣的接口支持」錯誤
當我將我的程序集編譯爲x64時,只要第一次調用COM程序集,就會得到「類未註冊」COM異常。
以下建議here(對不起,如果我的術語不正確)我創建了一個新的COM +應用程序,並添加了我引用的COM程序集中找到的組件。當我運行我的總成64它使對COM組件一些成功的呼叫,直到我得到這個錯誤:
Unable to cast COM object of type 'TRIMSDK.RecordTypesClass' to interface type 'TRIMSDK.IBaseObjects'. This operation failed because the QueryInterface call on the COM component for the interface with IID '{8A354545-6BCB-11D3-B273-00A0C9FC3DC0}' failed due to the following error: No such interface supported (Exception from HRESULT: 0x80004002 (E_NOINTERFACE)).
「TRIMSDK.RecordTypesClass」根據類定義並實現「TRIMSDK.IBaseObjects」。
如果我從錯誤消息或'IBaseObjects'中搜索註冊表中的接口GUID,則找不到匹配項。自從創建COM +應用程序後,我在x86模式下得到了相同的錯誤(我猜這是有道理的),儘管在x86之前它在x86中運行良好。
所以,我假設'TRIMSDK.IBaseObjects'接口我正在嘗試使用不被註冊爲COM + thingy,我不知道爲什麼或如何解決它。
任何想法?提前致謝。
更新:我覺得我得到了E_NOINTERFACE例外TRIMSDK.IBaseObjects因爲該接口上的TypeLibType屬性設置爲僅「FNonExtensible」,而其他接口我成功地使用在組裝也有「FDispatchable」。是否有可能解決這個錯誤(改變類型庫或手動註冊'IBaseObjects'接口)?
http://msdn.microsoft.com/en-us/library/aa384231(v=vs.85).aspx – 2012-03-04 12:43:56
謝謝你的鏈接,但是我沒有在這裏找到任何特別有用的東西。我應該尋找什麼? – AndrewS 2012-03-04 14:53:17
如果您無法關注該文章,您可以嘗試通過http://1code.codeplex.com/wikipage?title=COM索取樣本。很可能您的COM對象註冊不正確。 – 2012-03-05 05:13:11