2012-02-17 80 views
1

我在C#中使用C++編寫的COM對象。我只是通過「新」來創建實例。我需要許多這樣的對象。但是其他每一個「新」都不會創造出新的實例,而只是給第一個對象提供參考。這就是爲什麼我有一個數據混亂。每次都有可能獲得新實例嗎?或者我應該實現IClassFactory在我的COM實例化不單身? 我在VC 2010中使用ATL支持與主人進行COM。我在哪裏以及如何實現IClassFactory方面遇到了麻煩。多實例COM對象

+0

獲得新的唯一對象是默認的行爲,當你沒有做什麼特別的東西與類工廠。你的C++不知何故被打破,很難猜測你做錯了什麼,只是「這不正確」的問題。 – 2012-02-18 00:59:14

+0

我已經從舊的C++ DLL中創建了COM。有一個全局對象,其數據總是通過調用不同COM實例的方法來改變。 COM可以共享這個全局對象嗎? – plax 2012-02-18 11:16:56

回答

1

您需要實施IUnknown,IClassFactory。根據你在做什麼,你可能想要實現IDispatchIErrorInfo。這很有關係,所以我不會在這裏詳細討論。以下三篇文章應包括,你是後幾乎一切:

  1. Step by Step COM Tutorial
  2. Understanding Classic COM Interoperability With .NET Applications
  3. Fundamentals of ATL COM Objects
+0

謝謝!我還有一個調整。我從舊的C++ dll中創建了COM。有一個全局對象,其數據總是通過調用不同COM實例的方法來改變。 COM可以共享這個全局對象嗎? – plax 2012-02-18 11:14:20

+0

@plax您應該將此註釋作爲一個單獨的問題,但是,除了我的頭頂,您可能需要考慮使用共享內存。請參閱創建命名的共享內存 http://msdn.microsoft.com/en-us/library/windows/desktop/aa366551(v=vs.85).aspx – JamieSee 2012-02-21 18:01:33