2011-01-13 69 views
0

我有用Windows Mobile 6.1運行的C++和MFC(VS 2008 SP1)編寫的應用程序。現在我需要將功能集成到此應用程序中,該功能僅可通過第三方供應商的.NET庫訪問。Windows Mobile 6上的COM Interop

我的想法是圍繞這個.NET庫創建我自己的包裝器/外觀.NET程序集,該程序集公開了我的項目所需的功能,併爲我的C++/MFC項目製作此組件。當在VS 2008中爲這個包裝庫(C#,「智能設備」項目類型,類型「類庫」,目標框架.NET 2.0(或3.5),目標平臺「Windows Mobile 6 Professional SDK」)設置項目時「)我注意到項目屬性中的選項使組件COM可見註冊爲COM-Interop已禁用(在VS中的對話框中灰顯)。

(當我創建一個「正常」(不適用於智能設備)類庫項目框架2.0的選項。)

問題:

  • 1)是COM的互操作支持Windows Mobile呢?
  • 2)如果是這樣,Windows Mobile支持的COM-Interop的特殊方向是否需要(使.NET程序集對本機應用程序可見)?
  • 3)如果是這樣,我通過設置項目做錯了什麼?
  • 4)我有解決上面第一段中描述的問題的其他選項嗎?

非常感謝您的幫助!

+0

不太確定這裏發生了什麼,CF上支持[ComVisible]屬性。 '註冊COM互操作'被禁用很有意義,它必須在設備上完成,而不是在開發機器上完成。檢查CF是否有您需要的Regasm.exe工具。 – 2011-01-13 14:04:29

+0

是的,我在MSDN上看到支持[ComVisible]。我也可以在我的項目的AssemblyInfo.cs中將ComVisible設置爲true(並且編譯時不會出現錯誤)。這很混亂。本文(http://msdn.microsoft.com/en-us/library/kfzsfkz3%28v=VS.90%29.aspx)說:「使用程序集註冊工具,如Regasm.exe,爲COM客戶端使用託管組件作爲COM類[在CF中不支持]「 - 除其他不支持的功能外,最終在下面確認ctacke的答案。 – Slauma 2011-01-13 14:16:36

回答

1

您不能在CF中創建託管COM對象,因爲不支持託管。

從本機調用託管代碼(除了從託管端啓動的回調等)的唯一方法是創建一個單獨的託管可執行文件,並在其自己的進程中運行並使用IPC。