2012-01-18 270 views
1

我試圖使用由EXE公開的COM函數。我已經使用Visual Studio 2010(在Windows7/x64機器上)創建了一個C#項目,並添加了對該EXE的引用,然後將Isolated標誌設置爲true。當我構建解決方案時,我得到了它公開的每個類的錯誤。註冊與EXE的免費COM錯誤

問題隔離COM參考 'FNCClient11Lib':註冊表 鍵 'HKEY_CURRENT_USER \ Software \ Classes下\ CLSID {e49b30c9-6d7e-48f5-91da-f2f0414c6a13} \ InProcServer32中' 缺失值(默認)「。

這些記錄並不在該位置的註冊表中存在,但在這裏(下圖)

HKEY_CURRENT_USER \ Software \ Classes下\ Wow6432Node \ CLSID {E49B30C9-6D7E-48F5-91DA-DO F2F0414C6A13存在}

  • 有什麼辦法建立的時候我可以指出這在註冊表中的位置是否正確?
  • 我可以參考一個EXE嗎?到目前爲止,我所見過的所有例子都只引用了DLL。
+0

就意識到,我也越來越警告「問題隔離COM引用‘FNCClient11Lib’:進程的服務器不支持」 – 2012-01-18 18:30:58

+1

可能[是否有免費註冊COM組件的激活方法](http://stackoverflow.com/questions/1026202/is-there-a-way-for-registration-free-activation-of-com-componets) – 2012-01-18 18:54:15

+0

我認爲你是對的漢斯。謝謝 – 2012-01-19 14:30:59

回答

0

當類型庫包含在COM接口中標記爲'uncreatable'的類時,會出現此問題。您可以通過使用OLE/COM查看器(作爲管理員),導航到導致問題的類型庫,打開它並查找CoClass定義來檢查此問題。如果使用報告的uuid的人被宣佈爲「不可創作」,那麼你就知道了。此外,在VS對象瀏覽器中,這些類不在接口中公開構造函數。

我的解決方案是用這些類的公共構造函數重新構建COM組件,但當然這隻有在擁有源代碼時纔有可能。

最後,可能還有其他的原因,這種現象雖然...